前提
- OS: Windows 11 Pro 21H2 ビルド 22000.675
- GitHub に SSH 接続用の公開鍵を追加済み
OpenSSH サーバーのインストール
- Windows キー -> 設定アイコン ->
アプリ
->オプション機能
->機能を表示
ボタン押下 OpenSSH サーバー
にチェックを入れて次へ
ボタン押下インストール
ボタン押下
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
公開鍵認証のみを許可するように設定変更
- 管理者権限で開いたテキストエディタで
c:\ProgramData\ssh\sshd_config
を開き、以下修正を行う#PasswordAuthentication yes
->PasswordAuthentication no
- sshd サービスリスタート
start-process -verb runas powershell -ArgumentList Restart-Service,-Name,'sshd'
動作確認
ssh mikoto@localhost
ログインできた、 OK.
以上。
参考資料
- Windows 用 OpenSSH サーバー構成 | Microsoft Docs
- Windows10でSSHサーバーを立ててデフォルトシェルをBashにする - Qiita
- 【PowerShell】サービスのスタートアップの種類を設定する - ほそぼそプログラミング日記
- Windows環境でPowerShellを使ってサービスを制御する方法 | 4thsight.xyz
- PowerShellでのOut-Fileコマンドの使い方|各オプションもご紹介 | テックマガジン from FEnetインフラ
- 文字エンコードについて - PowerShell | Microsoft Docs
- Windows 11 に SSH サーバーを立てて公開鍵認証を使う - Qiita
- @IT:sshでパスワード認証を禁止するには
0 件のコメント:
コメントを投稿