AmazonEC2で作成したインスタンスにSSH接続します。
これといって複雑なところはないのですが鍵の格納先によっては失敗する場合があるためまとめてみました。
前提条件
Visual Studio Code 1.63.2
Windows環境
Remote-SSH v0.78.0
拡張機能
VSCodeの拡張機能でRemote-SSHをインストールする。
SSH接続
図ではコマンドパレットの下から3番目Open SSH Configuration File...を選択。
~.ssh\config の設定ファイルを選択する。
Host 接続先につけたい名前(任意の値)
HostName インスタンス概要に記載されている パブリック IPv4 DNS の値
User 今回AmazonLinux2を使用している為ec2-user(他のOSの場合適宜変更)
Port SSH接続は22を使用するのが一般的なため今回は22を使用(要設定)
IdentityFile キーの絶対パス
コンフィグファイルを設定したら再度リモート接続の緑のアイコンをConnect to HostHost...を選択すると別ウィンドウで接続が開始される。初回はコマンドパレットで使用しているOSを選択する。
以下は接続失敗時のログの一部。
[00:02:15.910] Got some output, clearing connection timeout
[00:02:16.181] > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[00:02:16.191] > @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions for 'E:\\Key\\XXXX.pem' are too open.
> It is required that your private key files are NOT accessible by others.
> This private key will be ignored.
> Load key "E:\\Key\\XXXX.pem": bad permissions
> ec2-user@hostname: Permission deni
> ed (publickey,gssapi-keyex,gssapi-with-mic).
> プロセスが、存在しないパイプに書き込もうとしました。
'UNPROTECTED PRIVATE KEY FILE'
調べてみたところキーの保護が不十分の場合発生するとのこと。OSがLinuxであればchmodのコマンドでオプションを600に指定すれば解決できるそう。今回はWindows環境なのでファイル権限を操作するのは少し工夫が必要。
さらに調べたところWindows環境の場合Userディレクトリ内の階層に格納されていればファイルの権限を変えずともキーの保護がされているとみなされる。今回私はユーザーディレクトリ外の拡張ディスクに鍵を格納していたためSSH接続に失敗。
結論:Windows環境ではユーザーディレクトリ以下の階層に鍵を格納する必要がある。
鍵の格納先を変更した場合接続完了した。
接続完了した場合新規のウィンドウの左下にconfigファイルで設定したHost名が表示される。
参考