AWSのWindows AMIで作成したインスタンスにsshで接続する方法についてです。
使用したAMIは、「Windows_Server-2016-English-Deep-Learning-2018.03.24 (ami-4f168837)」です。
WindowsでSSHサーバを構築する方法はいくつかありますが、マイクロソフトがオープンソースで公開している「Win32 port of OpenSSH」を使用しました。
GitHub - PowerShell/Win32-OpenSSH: Win32 port of OpenSSH
手順は、以下の記事を参考にしました。
ASCII.jp:マイクロソフト版OpenSSHをサーバーとして動作させる
※記事にはsshdのパスに誤りがあるので要注意です。パスの誤りに気づかず数時間無駄にしてしまいました・・・
OpenSSHのダウンロード
Releases · PowerShell/Win32-OpenSSH · GitHub
から、releaseの最新版のOpenSSH-Win64.zipをダウンロードして、「C:\」に解凍します。
※現時点で最新のv0.0.24.0を使用しました。
以下、「C:\OpenSSH-Win64」に解凍した前提とします。
sshdサーバーをサービスとしてインストール
PowerShellを管理者モードで起動し、
cd C:\OpenSSH-Win64 powershell -ExecutionPolicy Bypass -File install-sshd.ps1
sshd用にファイアウオール通過のルールを設定
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName OpenSSH -Program C:\OpenSSH-Win64\sshd.exe
※参考にした記事では、「sshed.exe」になっていましたが誤りです。
ホストの認証キーを作る
.\ssh-keygen.exe -A
sshdサービスをPCの起動時に自動的に実行
Set-Service sshd -StartupType Automatic
sshd_configファイルを編集
notepad sshd_config
でsshd_configをメモ帳で開いて、
#PubkeyAuthentication yes
の行頭の「#」を削除して、保存します。
ユーザーのホームフォルダ以下に.sshフォルダを作って公開鍵ファイルを置く
接続するクライアントでキーペアを作成
接続するクライアント側にもOpenSSHをダウンロードして解凍し、PowerShellを管理者モードで起動して、以下のコマンドを実行します。
cd C:\OpenSSH-Win64 .\ssh-keygen -t rsa
authorized_keysファイルのアクセス権で変更
C:\OpenSSH-Win64\FixHostFilePermissions.ps1 -Confirm:$false
sshdサービスを再起動
restart-service sshd
接続テスト
クライアントから接続できるかテストします。
cd C:\OpenSSH-Win64 ssh <サーバのユーザ名>@<サーバのIPアドレスまたはFQDN>
以上です。