目的
手元のMacから踏み台サーバを経由して、linuxサーバへ接続できるようにする。
sshで踏み台サーバにアクセスしてから、さらにlinuxサーバにssh接続することも出来るが、二重でsshをすると、scpなどで必要なファイルをコピーするのが不便になる。そこで1回のsshコマンドでlinuxサーバへアクセスできるようにポートフォワーディングを使うことにする。
前提
-
Linuxサーバの状態
SSH サーバが有効であり、公開鍵が登録されている -
windowsサーバの状態
OpenSSHがインストールされていて、外部からSSH接続が可能 -
Macの状態
192.168.100系のネットワークに接続していること
Network構成
Mac(192.168.100.90)から、Windows サーバ(192.168.100.140, 192.168.3.5)を経由して、別ネットワークにある Linux サーバ(192.168.3.4)に SSH 接続を確立し、ポートフォワーディングを使用して接続する。
踏み台PCの設定
1. Windowsサーバにsshサーバをインストールする
- スタートメニュー → 設定 → アプリ → オプション機能
- 「機能の追加」をクリックし、「OpenSSH サーバー」を検索
- 「OpenSSH サーバー」を選択し、「インストール」をクリック
- スタートメニュー → サービス (検索) → 「サービスアプリ」を開く
- サービスリストから 「OpenSSH SSH Server」 を探してダブルクリック
- スタートアップの種類を「自動」に設定し、「開始」をクリック
2. 踏み台PCに固定IPを振る
3. Windows側のfirewallの設定でMac側で指定するポートに受信と送信が可能なように設定する
-
タスクバーの検索ボックスに「Windows セキュリティ」と入力して開く
-
「ファイアウォールとネットワーク保護」をクリック
-
「詳細設定」リンクをクリックすると、「Windows Defender ファイアウォールの詳細設定」ウィンドウが開く
-
「受信の規則」をクリックし、受信ルールを作成
新しい受信ルールを作成
ポートの指定
アクションの設定
- 「接続を許可する」を選択し、「次へ」をクリック
プロファイルの選択
- 適用するプロファイルを選択します(通常はすべて選択)。
- 「次へ」をクリックします。
ルールの名前を設定
- ルールにわかりやすい名前を付けます(例: "SSH Forwarding Port 2222")。
- 「完了」をクリックします。
- 新しい規則がリストに表示され、「有効」になっていることを確認してください。
- 同様に「送信の規則」で規則を追加して設定してください。
Mac側の設定
sshのconfigファイルを書き換える
Macのhomeディレクトリ配下の.ssh/のconfigファイルに下記の設定を追加する
owner@fujiitatsuyanoMacBook-Pro .ssh % cat config
ServerAliveInterval 60
TCPKeepAlive yes
Host linux-server
HostName 192.168.3.4
User linux-user-name
ForwardAgent yes
ProxyJump proxy-server
LocalForward 2222 192.168.3.4:22
Host proxy-server
HostName 192.168.100.140
User windows-user-name
windows-server: windowsサーバへの接続設定
ForwardAgent yes により、MacBook の ssh-agent に登録されている鍵を転送。
→ sshの認証がパスワードのみの認証の場合は不要
linux-server:
ProxyJump windows-server により、Windows サーバを経由。
LocalForward 2222 192.168.3.4:22 により、MacBook のローカルポート 2222 を Linux サーバのポート 22 に転送。
sshポートフォワーディング出来ているかを確認
今回は公開鍵認証もあるので、ssh agentを起動させて、秘密鍵を登録しておく
ssh agent
cp /Users/owner/Downloads/id_rsa ./.ssh/id_rsa
ssh-add --apple-use-keychain ./.ssh/id_rsa
192.168.3.4のホスト名(linux-server)でssh接続を試みる
ssh linux-server