windows10にて公式にOpenSSHサーバーの機能が追加されたので、使いたい。
(リモート操作ではpsexecなどはあったがほとんど使えない)
これでwindows用のビルドなどがリモートで行えそう。
##OpenSSHのインストール
これはいろんな人が書かれているのでほぼ割愛。
ファイアウォールの設定も忘れずに。
OpenSSHの起動、設定
まずは起動
# サービス起動
Start-Service sshd
# サービス自動起動
Set-Service -Name sshd -StartupType 'Automatic'
デフォルトシェルも変えよう。
(何も変えなければコマンドプロンプトになっている)
シェルのパス確認
# powershellの場合
Get-Command powershell.exe | Format-Table -AutoSize -Wrap
CommandType Name Version Source
----------- ---- ------- ------
Application powershell.exe 10.0.19041.546 C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
# wsl bashの場合
Get-Command bash.exe | Format-Table -AutoSize -Wrap
# (省略)
のSource
がほしいパス
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\bash.exe" -PropertyType String -Force
# -Value以下は使いたいシェルのパスに変える
sshd_configの変更
デフォルトだとパスワード認証になる。
公開鍵認証に変えましょう。
sshd_config
は%programdata%\ssh\sshd_config
にある。
(%programdata%
はだいたいc:\ProgramData\
になってる。)
設定ファイルの編集は必ず管理者権限で行いましょう。
WindowsにはVirtualStoreというファイル保護の仕組みがあり、一般ユーザーで変更しても別の場所に保存され、いつまでも更新されません。
https://answers.microsoft.com/ja-jp/windows/forum/all/virtualstore/e09bf6c6-74fa-4b1b-a148-8de1dd9d367f
# 例
Invoke-Item sshd_config
でファイルをメモ帳などで開いて編集→保存
sshd_config
# 一番下の2行はコメントアウト
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Adminグループは別のauthorized_keys
ファイルが使われるようで、これは使わないようにしておく。
鍵ファイルのPermissionまわりで苦戦したので、ログも出しておく。
# Logging
SyslogFacility LOCAL0 # LOCAL0に変更
LogLevel DEBUG # ここは一般的なsshd_configの通り
......
# これも念の為コメントアウト
PubkeyAuthentication yes
sshd 再起動
restart-service -name sshd -force
あとは一般的な手順ssh-keygen
で鍵つくって、.ssh/authorized_keys
に登録。
これでsshでwindowsにつながると思いきや…
ハマったところ、鍵ファイルの権限まわり
クライアント側の秘密鍵の権限などは間違っていない。
ただ、windows側のsshdのログには
Could not open authorized keys 'C:\\Users\\hogeuser\\.ssh/authorized_keys': Permission denied
と吐かれる。
ググって出るような処理は行ってみたが…
# 権限確認
icacls C:\Users\hogeuser\.ssh\authorized_keys
結局、authorized_keysファイルから他のユーザーの権限削除、SYSTEM
ユーザーにフルアクセス権限を付与したらPermission denied
とは出なくなった。
↓ユーザーはSYSTEM
でなくてもいいかも。
https://gist.github.com/lelegard/0e257510057bea59738422ae871213e8#user-configuration-on-the-windows-server
read_keyfile_line: ----- line 1 exceeds size limit
メモ帳などでauthorized_keys
ファイルを編集するとこういうエラーがでることもある。
メモ帳ではUTF-8
を指定して上書き保存しましょう。