前提条件
- 自分で作成した秘密鍵でSSHログインしたい。
- WSLでいつもSSHを利用していて、秘密鍵の場所もWSLのhome以下の.sshで管理している。(秘密鍵の編集権限の設定に関わる。)
- cloud9でもいいけど、結局VScodeが見やすく使いやすいのでVScodeで開発したい人向け。
流れ
- EC2インスタンスに公開鍵をEC2インスタンスに登録。
- VScodeでの設定。VScodeでRemote SSHをインストール。設定ファイルの場所を変更。
- 秘密鍵の権限を設定。
- configファイルを設定。
EC2インスタンスに公開鍵をEC2インスタンスに登録。
EC2インスタンスを起動。
vim ~/.ssh/authorized_keys
に公開鍵を追記する(既存の公開鍵は削除してしまわないように)。
インスタンスがパブリックネットワークに置かれていること(参照先のルートテーブルにインターネットゲートウェイがあること)を確認する。
また、インスタンスのセキュリティグループの設定でSSHアクセスが許可されていることを確認する。
VScodeでの設定。
Remote SSHの設定で、設定ファイルの場所を以下(普段WSLでSSHで利用しているconfigファイルの場所)に変更。
秘密鍵もこちらに置いてある。
C:\Users\${Username}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\${Username}\.ssh\config
新しくどこかにつくってもよいが、SSH系は一か所で管理した方が楽なので。
ただし、このようにすると秘密鍵の権限設定が少し必要になる。
秘密鍵の権限を設定。
WSKで作成した鍵は、Windows(VScode)側からはフルオープンになってしまっている。
確認方法は、エクスプローラーでファイルを右クリック
プロパティ⇒セキュリティ⇒詳細設定
こちらの権限を適切にしないと、VScodeからRemote sshで接続しようとするとpermission too open
エラーが出てしまう。
以下、設定方法。
- まず秘密鍵をコピー(失敗しても戻れるように)。失敗すると戻れなくなってしまう可能性あり。
- コピー後のファイルで、権限変更をする。まず継承の無効化をする。
- 無効化すると、ようやくユーザー以外のアクセスを削除できるようになる。
上記設定は、WSLのターミナルからであればsudo chmod 400 ./秘密鍵
で済むが、Windows側から権限設定となると少し面倒。
注意点:毎回IPアドレスが変わるので、チェックする必要がある。もしくは、こちらの記事でドメイン名を取得し、インスタンス起動時に毎回IPアドレスをドメイン名と紐づけるように設定するとラク。
configファイルを設定。
ターミナル上でvim ~/.ssh/config
でconfigファイルを編集。VScodeからもできる。
C:\Users\${Username}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\${Username}\.ssh\config
こちらでも良いし、WSL上での~/.ssh/config
どちらでも同じファイルを編集することになる。
Host cloud9VScode
HostName ${ip_address} or ${example.com}
user ec2-user
identityfile C:\Users\${username}\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\${username}\.ssh/秘密鍵
これで繋がります。