なんだこれは

はてなダイアリーから移転しました。

Windows に Linux から公開鍵認証方式でsshやscpを実行したい

Window に Linux から公開鍵認証方式でsshやscpを実行したい

Microsoft のOpenSSH が入っているWindowsLinux の OpenSSH から公開鍵認証方式で ssh や scp したい。

Windows の前提

  • Windows 10または Windows Server
  • 外部からSSH ログインができる
  • その際の認証方式はパスワード認証
  • 設定を変更するため管理者権限のあるアカウントがある
  • 仮でWindows ホスト名は Win-server とする

Windows での作業

1. sshd_configで公開鍵認証方式を有効にする

MicrosoftのドキュメントのWindows Configurations in sshd_config/OpenSSH Server configuration for Windows Server and Windows によると、Windows 用の sshd_config は %programdata%\ssh\sshd_config (または、C:\ProgramData\ssh\sshd_config) らしい。

Win-server に管理者権限でログインして、このファイルを編集する必要がある。該当ファイルを別のフォルダにコピーして、ファイルを編集しそのファイルを元のフォルダに戻すとよい。

なお編集は次の箇所のコメントを外すだけである。

#PubkeyAuthentication yes

次のようになればOK

PubkeyAuthentication yes

2. OpenSSH のサービスの再起動

OpenSSH の設定ファイルsshd_configを読み込ませるには、OpenSSH サービスを再起動する必要がある。

コントロールパネルから再起動することもできますし、PowerShell からも再起動できるようです。

Linux での作業

1. sshの公開鍵と秘密鍵を作成する

OpenSSH の公開鍵と秘密鍵を用意する。基本的には既存のものを使いまわさない方がいいので作成することになる。

暗号方式としては、ed25519方式が推奨されているが、RSAでもよいだろう。

ed25519 方式の暗号鍵なら次のコマンドを実行する。

ssh-keygen -t ed25519

RSA方式の暗号鍵なら 4096 ビット長の鍵にしておいた方が安心なので次のコマンドで作成する。

ssh-keygen -t rsa -b 4096

2. Windows に公開鍵をデプロイ

Win-serverに公開鍵を登録したい。しかし、Microsoftドキュメントの 公開キーのデプロイ/OpenSSH キーの管理 によると、Windows ではそのアカウントが管理者権限か一般のアカウントかで鍵を登録するファイルが異なるそうだ。

なお、ssh-copy-idWindows 向けには動作しないようです。

2-1. 一般ユーザー

ssh-copy-id は動作しないのですがすることは同じ。

Win-server の一般ユーザー username に公開鍵をデプロイするには、そのユーザーのホームディレクトリに.ssh を作成して、authorized_keys ファイルに追加する。

まず、Linux から Win-serverusername として ssh でログインして、ユーザーのホームディレクトリに .sshディレクトリを作成する。Windows はパス区切り文字には/でも代用できる。Linux では\特殊文字と扱われるので避けてみる

設定が完了できていないので、パスワードの入力が必要。

ssh username@Win-server mkdir "C:/Users/username/.ssh"

ディレクトリが存在していた場合は、エラーになります。

エラーにならなかった場合

ディレクトリを作成したら、その中に authorized_keys を作成して、公開鍵を追加する。

Linux で作成した公開鍵が ~/.ssh/id_ed25519.pub だったとして次のコマンドを実行する。

設定が完了できていないので、パスワードの入力が必要。

scp ~/.ssh/id_ed25519.pub username@Win-server:C:/Users/username/.ssh/authorized_keys

エラーになった場合

エラーになった場合は、ディレクトリが存在していたのかもしれません。dir コマンドなどで中身を確認するといい。

ssh username@Win-server dir "C:/Users/username/.ssh"

authorized_keys ファイルがあれば、scp コマンドでファイルを取得して Linux 上で確認しよう。

2-2. 管理者権限のユーザー

Microsoft ドキュメント管理ユーザー/OpenSSH キーの管理 によると、管理者のアカウントの場合は、C:\ProgramData\ssh\ に作成した、administrators_authorized_keysファイルに公開鍵を登録する必要がある。

C:\ProgramData\ssh はすでに存在していることがわかっているので、administrators_authorized_keys ファイルに Linux から公開鍵をコピーすればいい。また、Windows ならではなだが ACL を設定する必要がある。

ここでは、Win-serverのアカウントはusername とし、Linux で作成した公開鍵が ~/.ssh/id_ed25519.pub だったとして次のコマンドを実行する。

scp ~/.ssh/id_ed25519.pub username@Win-server:C:/ProgramData/ssh/administrators_authorized_keys

ファイルを登録したら、ACL を設定する。

ssh username@Win-server icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

3. 確認

Linux から Windows にファイルを送信するなどして確認する。うまくいけば、~/.ssh/config などの作成も検討しよう。

scp -i ~/.ssh/id_ed25519 test username@Win-server:test

Emacs 28.1 をソースからビルド

Emacs 28.1 をソースからビルド

Emacs 28.1 がリリースされていたのでとりあえずソースからビルドしよう

https://github.com/emacs-mirror/emacs/tags から emacs-28.1 の zip をダウンロード

unzip emacs-emacs-28.1.zip
cd emacs-emacs-28.1
./autogen.sh
mkdir -p ~/work/usr/local
./configure --prefix=~/work/usr/local/
make

プロになるJava日記

プロになるJava日記

ISBN:978-4-297-12685-8 の プロになるJava を購入した。Java は雰囲気しか知らなかったのでこの際プロになってみよう。

私の環境

  • macOS 12.3.1
    • Intel Mac
    • 2020 年の 13 インチモデル
  • Java
    • openjdk version "17.0.2" 2022-01-18
    • OpenJDK Runtime Environment Temurin-17.0.2+8 (build 17.0.2+8)
    • OpenJDK 64-Bit Server VM Temurin-17.0.2+8 (build 17.0.2+8, mixed mode, sharing)
  • Intellij Community Edition
    • 2021.3.3

1章

  • 以前に Intellij をインストールしてあったので、そのまま更新して使うことにした。
  • プロになるJava はキーマップの設定をデフォルトにするように勧めていたが、よくわからないのでそのままでいいことと考えた

2章

  • Intellij のキーマップがおかしい? →あ、そうかを繰り返してしまう。

3章

3.1 JShell

  • JShell は Java9 から導入されたらしい、Java の REPL らしい。
  • ふーん、やっぱり Common Lisp のREPLって優れたアイディアだったんだなーと感心。
  • あれ、Intellij のファイルの内容をJShell に送信する機能が 3.1章にでてこないぞ?

4章

  • 特になし

macOS being rebooted

suddenly macOS being rebooted

macOSLibreOffice とか、Firefox とかをつかっていたら突然黒画面になって再起動した。再起動後にファイルを回復したので特に被害はなかったもよう。

以下は再起動後に Apple に送信したログの一部

panic(cpu 0 caller 0xffffff801eba3da0): "compressed PTE 0xfffffe9d8c223620 0xc010000000000000 has extra bits 0x8000000000000000: corrupted? Adjacent PTEs: 0x80000001cc7c7067@0xfffffe9d8c223618, 0x4000000000000000@0xfffffe9d8c223628"@/System/Volumes/Data/SWE/macOS/BuildRoots/d7e177bcf5/Library/Caches/com.apple.xbs/Sources/xnu/xnu-7195.141.2/osfmk/i386/pmap_internal.h:869
Backtrace (CPU 0), Frame : Return Address
0xffffffb0c7103750 : 0xffffff801ea8e04d 
0xffffffb0c71037a0 : 0xffffff801ebd4e13 
0xffffffb0c71037e0 : 0xffffff801ebc540a 
0xffffffb0c7103830 : 0xffffff801ea32a2f 
0xffffffb0c7103850 : 0xffffff801ea8d86d 
0xffffffb0c7103970 : 0xffffff801ea8db63 
0xffffffb0c71039e0 : 0xffffff801f29dc0a 
0xffffffb0c7103a50 : 0xffffff801eba3da0 
0xffffffb0c7103b80 : 0xffffff801eb240db 
0xffffffb0c7103c00 : 0xffffff801eb22b4c 
0xffffffb0c7103c80 : 0xffffff801eb2689a 
0xffffffb0c7103f00 : 0xffffff801ebc5a20 
0xffffffb0c7103fa0 : 0xffffff801ea3291f 

Process name corresponding to current thread: soffice
Boot args: chunklist-security-epoch=0 -chunklist-no-rev2-dev

Mac OS version:
20G80

Kernel version:
Darwin Kernel Version 20.6.0: Wed Jun 23 00:26:31 PDT 2021; root:xnu-7195.141.2~5/RELEASE_X86_64
Kernel UUID: FECBF22B-FBBE-36DE-9664-F12A7DD41D3D
KernelCache slide: 0x000000001e800000
KernelCache base:  0xffffff801ea00000
Kernel slide:      0x000000001e810000
Kernel text base:  0xffffff801ea10000
__HIB  text base: 0xffffff801e900000
System model name: MacBookPro16,2 (Mac-5F9802EFE386AA28)
System shutdown begun: NO
Hibernation exit count: 0

System uptime in nanoseconds: 677813363453169
Last Sleep:           absolute           base_tsc          base_nano
  Uptime  : 0x00026877b8c0b127
  Sleep   : 0x0001a28aca2f5c41 0x00036df8756d35a5 0x0001a286e38e79eb
  Wake    : 0x0001a28acd3255cc 0x00036e25c0f6da5d 0x0001a28acb72bb9a
last started kext at 627837699295207: >!UAudio   405.39 (addr 0xffffff7fb95ac000, size 315392)
last stopped kext at 627897720245425: >!UAudio   405.39 (addr 0xffffff7fb95ac000, size 315392)
loaded kexts:
fi.dungeon.driver.SATSMARTDriver    0.10.2
org.virtualbox.kext.VBoxNetAdp  6.1.22
org.virtualbox.kext.VBoxNetFlt  6.1.22
org.virtualbox.kext.VBoxUSB 6.1.22
org.virtualbox.kext.VBoxDrv 6.1.22
com.Cycling74.driver.Soundflower    2
|IO!BSerialManager  8.0.5d7
>AGPM    122.1
>X86PlatformShim 1.0.0
>!APlatformEnabler   2.7.0d0
@filesystems.autofs 3.0
@fileutil   20.036.15
>!ATopCaseHIDEventDriver 4050.1
>!AHIDALSService 1
>!AUpstreamUserClient    3.6.8
>!AGraphicsDevicePolicy  6.3.5
@AGDCPluginDisplayMetrics   6.3.5
>!A!IICLGraphics 16.0.5
>pmtelemetry 1
|IOUserEthernet 1.0.1
>usb.!UUserHCI   1
@Dont_Steal_Mac_OS_X    7.0.0
>!AHV    1
>!ADiskImages2   1
>!AGFXHDA    100.1.433
>!A!IPCHPMC  2.0.1
>!ABacklight 180.3
>!AMCCSControl   1.14
>!ABridgeAudio!C 140.4
>!AThunderboltIP 4.0.3
>!A!IICLLPGraphicsFramebuffer    16.0.5
>BridgeAudioCommunication    140.4
>!AAVEBridge 6.1
>!A!ISlowAdaptiveClocking    4.0.0
|SCSITaskUserClient 436.140.1
>BCMWLANFirmware4378.Hashstore   1
>BCMWLANFirmware4377.Hashstore   1
>BCMWLANFirmware4364.Hashstore   1
>BCMWLANFirmware4355.Hashstore   1
>!AFileSystemDriver  3.0.1
@filesystems.tmpfs  1
@filesystems.hfs.kext   556.100.11
@BootCache  40
@!AFSCompression.!AFSCompressionTypeZlib    1.0.0
@!AFSCompression.!AFSCompressionTypeDataless    1.0.0d1
@filesystems.apfs   1677.141.1
>!ABCMWLANBusInterfacePCIeMac    1
@private.KextAudit  1.0
>!ASmartBatteryManager   161.0.0
>!AACPIButtons   6.1
>!ASMBIOS    2.1
>!AACPIEC    6.1
>!AAPIC  1.7
@!ASystemPolicy 2.0.0
@nke.applicationfirewall    311
|IOKitRegistryCompatibility 1
|EndpointSecurity   1
>!UMergeNub  900.4.2
|IOUSBUserClient    900.4.2
|IOAVB!F    940.4
@plugin.IOgPTPPlugin    985.2
|IOEthernetAVB!C    1.1.0
@kext.triggers  1.0
>!AHIDKeyboard   224
>!AHS!BDriver    4050.1
>IO!BHIDDriver   8.0.5d7
>!AActuatorDriver    4440.3
>!AMultitouchDriver  4440.3
>!AInputDeviceSupport    4400.35
>!AGraphicsControl   6.3.5
|IO!BHost!CUARTTransport    8.0.5d7
|IO!BHost!CTransport    8.0.5d7
>!ABacklightExpert   1.1.0
|IONDRVSupport  585.1
>!ASMBus!C   1.0.18d1
|IOAudio!F  300.6.1
@vecLib.kext    1.2.0
>!AThunderboltDPOutAdapter   8.1.4
|IOAccelerator!F2   442.9
>!A!ILpssUARTv1  3.0.60
>!A!ILpssUARTCommon  3.0.60
>!AOnboardSerial 1.0
@!AGPUWrangler  6.3.5
@!AGraphicsDeviceControl    6.3.5
|IOGraphics!F   585.1
|IOSlowAdaptiveClocking!F   1.0.0
>X86PlatformPlugin   1.0.0
>IOPlatformPlugin!F  6.0.0d8
>usb.ethernet.asix   5.0.0
>usb.!UHub   1.2
>usb.IOUSBHostHIDDevice  1.2
>usb.cdc.ncm 5.0.0
>usb.cdc.ecm 5.0.0
>usb.cdc 5.0.0
>usb.networking  5.0.0
>usb.!UHostCompositeDevice   1.2
>!AThunderboltPCIDownAdapter 4.1.1
>!AThunderboltDPInAdapter    8.1.4
>!AThunderboltDPAdapter!F    8.1.4
>!AHPM   3.4.4
>!A!ILpssI2C!C   3.0.60
>!A!ILpssI2C 3.0.60
>!A!ILpssDmac    3.0.60
>!ABSDKextStarter    3
|IOSurface  290.8.1
@filesystems.hfs.encodings.kext 1
>!AXsanScheme    3
>usb.!UVHCIBCE   1.2
>usb.!UVHCICommonBCE 1.0
>usb.!UVHCI  1.2
>usb.!UVHCICommon    1.0
>!AEffaceableNOR 1.0
|IOBufferCopy!C 1.1.0
|IOBufferCopyEngine!F   1
|IONVMe!F   2.1.0
>!ABCMWLANCoreMac    1.0.0
|IOSerial!F 11
|IO80211!FV2    1200.12.2b1
|IOSkywalk!F    1
>mDNSOffloadUserClient   1.0.1b8
>IOImageLoader   1.0.0
>corecapture 1.0.4
>usb.!UHostPacketFilter  1.0
|IOUSB!F    900.4.2
>!AThunderboltNHI    7.2.8
|IOThunderbolt!F    9.3.2
>usb.!UXHCIPCI   1.2
>usb.!UXHCI  1.2
>!AEFINVRAM  2.1
>!AEFIRuntime    2.1
>!ASMCRTC    1.0
|IOSMBus!F  1.1
|IOHID!F    2.0.0
$!AImage4   3.0.0
|IOTimeSync!F   985.2
|IONetworking!F 3.4
>DiskImages  493.0.0
|IO!B!F 8.0.5d7
|IOReport!F 47
|IO!BPacketLogger   8.0.5d7
$quarantine 4
$sandbox    300.0
@kext.!AMatch   1.0.0d1
|CoreAnalytics!F    1
>!ASSE   1.0
>!AKeyStore  2
>!UTDM   511.141.1
|IOUSBMass!SDriver  184.140.2
|IOSCSIBlockCommandsDevice  436.140.1
|IO!S!F 2.1
|IOSCSIArchitectureModel!F  436.140.1
>!AMobileFileIntegrity   1.0.5
@kext.CoreTrust 1
>!AFDEKeyStore   28.30
>!AEffaceable!S  1.0
>!ACredentialManager 1.0
>KernelRelayHost 1
|IOUSBHost!F    1.2
>!UHostMergeProperties   1.2
>usb.!UCommon    1.0
>!ABusPower!C    1.0
>!ASEPManager    1.0.1
>IOSlaveProcessor    1
>!AACPIPlatform  6.1
>!ASMC   3.1.9
|IOPCI!F    2.9
|IOACPI!F   1.4
>watchdog    1
@kec.pthread    1
@kec.corecrypto 11.1
@kec.Libm   1