概要
- vscodeからEC2インスタンスへリモートSSH接続する際にハマり、いろんな記事を調べて試してみたが、うまくいかなかった。色々試してみて、自分なりに納得したので数ある方法の一解決方法として記録しておく。
対象
- vscodeからEC2へのSSH接続で「Permission denied (publickey,gssapi-keyex,gssapi-with-mic)」が出て困っている人
書かないこと
- EC2周りの設定や説明
- EC2接続時に使用するsshコマンドの詳細
環境
- PC : Mac
- OS : Ventura 13.3
- SSHクライアント : Remote SSH(vscode拡張機能)
注意すること
いろんな人の記事をみて、注意することが書いてあったので、わかる範囲で列挙する
- 「ssh -i {path}/{key-name}.pem ec2-user@xxx.xxx.xxx.xxx」の秘密鍵のPathは絶対パスである必要がある
- 秘密鍵ファイルは他のユーザーがアクセス出来ないフォルダに配置していなければならない
- 秘密鍵ファイルは
.ssh
ディレクトリ配下に配置するのが良い - .sshディレクトリの権限を700で設定しておくのが良い
// 所有者に対して読み取り、書き込み、実行の権限を設定し、グループメンバーや他のユーザーには一切の権限を与えない設定。 chmod 700 ~/.ssh
- 秘密鍵ファイルは
- 適切なディレクトリに配置して、適切な権限を付与してもエラーとなる場合は.ssh配下のconfigファイルが正しく記述されているか確認する
設定手順
上記注意事項を踏まえた上で設定していく
上記前提でも記載の通り、Remote SSH(vscode拡張機能)を使用した手順(他のSSHクライアントを使用した際にもおそらく変わらないと思う)
1 .sshディレクトリに移動する
cd ~/.ssh
2 configファイルがあるので開く
インフォメーション
vscode->Remote SSHでの設定方法を説明しておりますが、vimや他のテキストエディタを用いてconfigファイルを開いていただくでも問題ないです
1 vscode->Remote SSH画面からconfigファイル選択画面を表示する
記述例
注意
IdentityFileの鍵ファイルのパスは絶対パス指定なので、.sshディレクトリにてpwdコマンドを叩き、取得したパスを指定するようにしてください
```
Host {EC2 public IP Address}
HostName {EC2 public IP Address}
IdentityFile /Users/{username}/.ssh/my-key.pem
User ec2-user
```
4 接続する
まとめ
見る必要があるポイント
- .sshディレクトリ配下に鍵ファイルを配置しているか?
- .sshディレクトリと鍵ファイルの権限は適切か?
- configファイルは正しく記述できているか?
上記手観点を踏まえた上で試行錯誤したところ私は解決することができたので、同じような悩みを持つ人の一助になれれば幸いです。