2022年6月8日水曜日

Windows 11 Pro に sshd をインストールして公開鍵認証方式でログインする

前提

  • OS: Windows 11 Pro 21H2 ビルド 22000.675
  • GitHub に SSH 接続用の公開鍵を追加済み

OpenSSH サーバーのインストール

  1. Windows キー -> 設定アイコン -> アプリ -> オプション機能 -> 機能を表示 ボタン押下
  2. OpenSSH サーバー にチェックを入れて 次へ ボタン押下
  3. インストール ボタン押下

OpenSSH サーバーの設定

sshd サービスを自動起動に設定

PowerShell で以下コマンドを実行。

start-process -verb runas powershell -ArgumentList Set-Service,-Name,'sshd',-StartupType,'Automatic'

sshd サービスを起動

PowerShell で以下コマンドを実行。

start-process -verb runas powershell -ArgumentList Start-Service,-Name,'sshd'

GitHub の公開鍵を authorized_keys に追記

Invoke-WebRequest で取得し、 Out-File で追記する。

(Invoke-WebRequest https://github.com/mikoto2000.keys).Content | Out-File -FilePath ~/.ssh/authorized_keys -Encoding utf8 -Append

今回使うユーザーが、 Administrator グループに入っているため、 C:\ProgramData\ssh\authorized_keys が参照される。

そちらにコピーして権限を設定。

# authorized_keys コピー
start-process -verb runas powershell -ArgumentList Copy-Item,c:/Users/mikoto/.ssh/authorized_keys,c:/ProgramData/ssh/administrators_authorized_keys

# 権限設定
start-process -verb runas powershell -ArgumentList icacls,.\administrators_authorized_keys,/inheritance:r,/grant,Administrators:F,/grant,SYSTEM:F

デフォルトシェルを PowerShell へ変更

start-process -verb runas powershell -ArgumentList New-ItemProperty,-Path,"HKLM:\SOFTWARE\OpenSSH",-Name,DefaultShell,-Value,"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe",-PropertyType,String,-Force

公開鍵認証のみを許可するように設定変更

  1. 管理者権限で開いたテキストエディタで c:\ProgramData\ssh\sshd_config を開き、以下修正を行う
    • #PasswordAuthentication yes -> PasswordAuthentication no
  2. sshd サービスリスタート
    • start-process -verb runas powershell -ArgumentList Restart-Service,-Name,'sshd'

動作確認

ssh mikoto@localhost

ログインできた、 OK.

以上。

参考資料

0 件のコメント:

コメントを投稿