VScode Remote-SSHで外部サーバーに 多段SSH接続

WindowsのVScodeからラズパイ(Raspbian)経由でエックスサーバーに接続しています。

c:/Users/あなたのユーザー名/.ssh/configファイルにProxyCommandを使って踏み台サーバ経由で接続します。 秘密鍵はラズパイ用もエックスサーバー用もローカルのWindowsのフォルダに保存しています。

手順

  1. エックスサーバーでSSHを有効にして、パスフレーズ設定、鍵を生成~ダウンロードしておく。(Windows フォルダに保存)
  2. ラズパイとSSH鍵でのSSH接続できるようにして、/.ssh/configファイルを作成しておく。

    (ここを参照)
  3. VScodeでラズパイ経由でエックスサーバーに接続する。

VScodeで多段SSHをするときは、/.ssh/configファイルのProxyCommandで接続しなければなりません。 その時は、踏み台サーバー(bastion)も秘密鍵の接続しか許可してくれません。 その為、ラズパイも予め秘密鍵接続にして、/.ssh/configファイルのProxyCommandに踏み台サーバーへの接続と次の段の接続サーバー(エックスサーバ)への接続設定を記述しておきます。

/.ssh/config 記述

上記の2で/.ssh/configファイルを下の様に作りました。 Windowsでは、c:/Users/ユーザー名/.ssh/configになります。

#踏み台サーバーとなるラズパイ
Host bastion
     HostName 192.168.1.5
     User pi
     Port 22
     #Window10に保存したラズパイの秘密鍵のパス
     IdentityFile ~/Documents/IoT/Raspi/id_rsa

#踏み台サーバーから接続する外部サーバー(エックスサーバー)
Host xserver
     HostName sv1_ _ _ _.xserver.jp
     User xs4_ _ _ _ _
     Port 10022
     #Window10に保存したxserverの秘密鍵のパス。 バックスラッシュでもスラッシュでもいいみたいです。
     IdentityFile ~\Documents\IoT\Xserver\xs4_ _ _ _ _.key
     ProxyCommand ssh -W %h:%p bastion
パラメータ説明
Host適当なSSH接続名。
プロンプトから『ssh SSH接続名』で接続する時に使用する
HostNameホスト名
接続したいSSHサーバーのサーバ番号とドメインかIPアドレス
Port接続したいSSHサーバーのポート番号
通常ポート番号は22
22は攻撃されやすいので、エックスサーバのようにポート番号を変えているサーバーもある。
エックスサーバーは10022
UserSSH接続のユーザー名
ラズパイ(Raspbian)の場合はpi。(初期値)
エックスサーバーではサーバー番号と言っています。
IdentityFile鍵認証する秘密鍵ファイルのパス。
ファイル名も記述する。
ProxyCommand踏み台サーバー(bastion)経由で接続する際のsshコマンドを代わりに実行してくれるコマンド。

-W:ホスト名とポート番号を指定するオプション。

VScodeを開いて接続

  1. 左のメニューからモニターのアイコンの『Remote Explorer』をクリックする。
  2. /.ssh/configに書いたSSH接続名bastionとxserverが表示されるので、『xserver』を右クリック。
  3. Connect to Host in Current Windowを選択。
    (現在のWindowでホストに接続)

VScodeは、c:/Users/ユーザー名/.ssh/configを自動で参照するので、/.ssh/configに記されたSSH接続名を認識しています。 bastionを選択すると、ラズパイにつながります。 (ラズパイのパスフレーズだけ聞いてきます。)

  1. パスフレーズを入力する。
    1回目はラズパイと接続のパスフレーズを入力しEnterを押す。
  1. またまたもう一回パスフレーズを入力するように聞いてくるので、今度はエックスサーバーのパスフレーズを入力しEnterを押す。
  1. 右下に『SSH:xserver』と表示されつながっている事を確認。
  2. 左のメニューから一番上のファイルのアイコンの『Explorer』をクリック。
  3. 『Open Folder』をクリック。
  1. 右に表示されているフォルダから選ぶ。
    • 上位6個しかフォルダは表示されませんが、下にスクロールできます。
    • 『..』を選ぶと一つ上のフォルダに移動する。
  2. フォルダを選ぶと『OK』を押す。

  1. 何故かまた2回パスフレーズを入力するよう聞いてくるので、先ほどと同じように、1回目はラズパイのパスフレーズ(=パスワード)を入力し、2回目はエックスサーバーのパスフレーズを入力する。(最初はここで躓きました。)

次回同じフォルダを開く時はパスフレーズを聞かれる事なくフォルダを開けました。

画像に alt 属性が指定されていません。ファイル名: image-9.png
  1. おめでとうございます。

SSHでエックスサーバーにつながりました。

コメント