Winwos10をアクセス先としてSSH接続。
パスワードでは接続できるけど、公開鍵暗号で接続できなかった。
何故だろうといろいろ試したけど結構単純な理由だったかも。
状況からみると、サービスで起動すると接続できない。
サービスだと、LocalSystem アカウントで実行されている。
net stop sshd
net start sshd
デバッグでさんざん user アカウントで実行したときは接続できていた。
要はcmdからこれで起動するとつながるという現象が起きていた。
net stop sshd
C:\Windows\System32\OpenSSH\sshd.exe
要は、LocalSystem アカウントとのアクセス権の違いが原因だったかも。
icacls %USERPROFILE%\.ssh /grant "NT AUTHORITY\SYSTEM:(F)"
icacls %USERPROFILE%\.ssh\authorized_keys /grant "NT AUTHORITY\SYSTEM:(F)"
多分これだと思うな。
他いろいろ、以下もパーミッションとか確認してたんだけど関係なかったかもなぁ。
C:\Users\user ディレクトリ:ユーザーの所有者がフルコントロールを持つ。
C:\Users\user\.ssh ディレクトリ:ユーザーの所有者がフルコントロールを持つ。
C:\Users\user\.ssh\authorized_keys ファイル:ユーザーの所有者がフルコントロールを持つ。
icacls C:\Users\user /grant user:F
icacls C:\Users\user\.ssh /grant user:F
icacls C:\Users\user\.ssh\authorized_keys /grant user:F
まあ、これは当然やっていた設定。
C:\ProgramData\ssh\sshd_config の確認。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
接続元で公開鍵、秘密鍵を作る。
ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
cat ~/.ssh/id_rsa.pub
id_rsa
pubid_rsa
ができて、
接続先の
.ssh\authorized_keys
に公開鍵を追加して。普通にこれでいかないというイレギュラーな状態だったわけだ。