前置き
VirtulBOXを用いて、仮想サーバを立てて検証および作業する方は多いと思います。
ネットワーク設定によって、NAT状態にしている仮想サーバへVSCODEからSSH接続する際の手順の備忘録です。
手順1:VirtualBox でポートフォワーディングを設定
下記は、VirtulBox側で設定する一連の設定の流れです。
1.VirtualBox を開く
2.左のリストから "接続したいサーバを選択" の仮想マシンを選択
3.[設定] → [ネットワーク] を開く
4.[アダプター1] タブを確認し、"割り当て" が NAT になっていることを確認
5.右下の [詳細] をクリック または[高度(D)]をクリック
6.[ポートフォワーディング] ボタンをクリック
7.新しいルールを追加
名前: SSH
プロトコル: TCP
ホストIP: 127.0.0.1 (省略可)
ホストポート: 2222(例: 任意の未使用ポート)
ゲストIP: 空欄 (デフォルトでOK)
ゲストポート: 22(SSHのデフォルトポート)
8.[OK] をクリックして保存
<参考画像>
工程2:起動したいサーバ選択
工程3,4:NW設定の画面を出す
工程5:ポートフォワーディング画面を出す
工程6,7:ポートフォワーディングを押し、[+]を押して設定画面を開く
ポイント
Host に設定する名称は 自由に決められる。
HostName には 実際の接続先(今回の場合は 127.0.0.1)。
Port は VirtualBox のポートフォワーディングで設定したポート(2222 など)。
User には 仮想マシンの Linux ユーザー名(your-username 部分)。
接続先サーバ側で設定
1.仮想マシンを起動し、ターミナルで以下を実行して SSH サーバが動作しているか確認してください。
sudo systemctl status sshd
2.もし "active (running)" でなければ、以下を実行
sudo systemctl start sshd
sudo systemctl enable sshd
3.ファイアウォールを確認
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
VS CODEでSSH接続
1.VS Code に SSH 拡張機能をインストール
拡張機能 (Remote - SSH) をインストール
2.VS Code の SSH 設定ファイルを編集
~/.ssh/config に以下を追加~/.ssh/config に以下を追加~/.ssh/config に以下を追加~/.ssh/config に以下を追加
Host centos8-vm # 接続時に識別するための任意の名前 接続先の実際のホスト名でなくてOK
HostName 127.0.0.1
User your-username # 接続先のユーザ名
Port 2222 # ポートフォワーディングで設定したポート番号
IdentityFile ~/.ssh/id_rsa # 鍵認証を使う場合 <-無くてもOK
3.VS Code で SSH 接続
Ctrl + Shift + P を押して Remote-SSH: Connect to Host... を選択
centos8-vm を選択
ポイント
your-username は、CentOS のログインユーザー名に置き換えてください。
id_rsa の鍵がない場合、ssh-keygen -t rsa で作成し、仮想マシンに ssh-copy-id でコピー。
Port 2222 はポートフォワーディングの設定に合わせる。
ポイント
これは、ssh -p 2222 your-username@127.0.0.1 と同じ意味になりますが、エイリアスを使うことで 覚えやすく簡単に接続できる ようになります。
Host に設定する名称は 自由に決められる。
HostName には 実際の接続先(今回の場合は 127.0.0.1)。
Port は VirtualBox のポートフォワーディングで設定したポート(2222 など)。
User には 仮想マシンの Linux ユーザー名(your-username 部分)。
<参考画像>
.sshファイル書き込み
configファイルを右クリックしてプログラムから開くを押して手動で書き込みが可能
以上で作業は終了です。
お疲れ様でした!