手順を忘れていつも調べてしまうためメモ。
ここではクライアント側(MacBook)からサーバ側(RaspberryPi)に接続する例を示す。
詳細は公式サイトを参照
https://code.visualstudio.com/docs/remote/ssh
スポンサーリンク
鍵作成
- クライアント側のマシンで鍵を作成
ssh-keygen -t rsa -b 2048
ホームディレクトリの .ssh 配下に 秘密鍵(id_rsa) と 公開鍵(id_rsa.pub)が作成される。
秘密鍵が流出したらサーバ側に自由にSSH接続され得るため、厳重管理。
$ ls -la .ssh
drwx------ 14 mac staff 448 12 28 12:47 .
drwxr-xr-x@ 160 mac staff 5120 11 26 13:55 ..
-rw------- 1 mac staff 3401 12 28 12:47 id_rsa
-rw-r--r-- 1 mac staff 752 12 28 12:47 id_rsa.pub
2. 公開鍵をサーバ側のホームディレクトリ直下の .sshディレクトリ (もし無ければ作成)に転送する
3. 転送後 ~/.ssh/id_rsa.pub となるため、~/.ssh/authorized_keys にリネームする
4. 権限設定を行う (忘れがちのため注意。設定しないとPermission deniedとなりSSH接続できない)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_key
ここまでで鍵設定は完了。
VSCode設定
1. VSCodeの拡張機能からRemote-SSHをインストール
2. ウインドウ左下の >< からリモートウインドウを開き、ホストに接続する
3. SSHホストを構成するをクリック
(グレーで塗りつぶした箇所には以前作成したホスト名が表示されている)
4. 一番上のファイルを選択
5. 以下のようにリモート接続設定を記述する
Host:VSCodeのリモート接続先に表示される名前
HostName:リモート接続する機器のIPアドレス
User:リモート接続する機器のユーザー名
IdentitiyFile:クライアント側の秘密鍵のフルパス
Host RaspberryPi
HostName 172.16.11.81
User pi
Port 22
StrictHostKeyChecking no
PasswordAuthentication no
PreferredAuthentications publickey
IdentityFile /Users/mac/.ssh/id_rsa
IdentitiesOnly yes
6. 再び、左下の >< のようなアイコンをクリックしてリモートウインドウを開き、ホストに接続するをクリックし一覧に表示されたRaspberryPi(5.で作成したホスト名)をクリックすると、リモートのサーバに接続できる
接続に失敗した時は
サーバ側(今回のRaspberryPi)で以下のauth.logを確認する。
私の場合には、鍵作成の4.権限設定ができていない時に以下の「Authentication refused: bad ownership」といったログが出力された。
cat /var/log/auth.log
Dec 28 13:09:02 pi sshd[6784]: Authentication refused: bad ownership or modes for directory /home/pi/.ssh
Dec 28 13:09:02 pi sshd[6784]: Connection closed by authenticating user pi 172.16.11.81 port 63689 [preauth]
以上