2022.03.19  

【Linux】踏み台サーバーを経由してプライベートサーバーでコマンドを実行する

Linux    

ローカル端末からsshコマンドを実行して、踏み台サーバー → プライベートサーバーに接続。その後コマンドを実行する方法について記載します。

結論としては下記コマンドを実行すれば良いです。
こちらのコマンドでは、プライベートサーバーでls -lを実行しています。

ssh -o "ConnectTimeout 5" -oProxyCommand=\
'ssh -W %h:%p 踏み台サーバーのユーザー名@踏み台サーバーのパブリックIP -i ~/.ssh/bastion.pem' \
-i ~/.ssh/private.pem プライベートサーバーのユーザー名@プライベートサーバーのプライベートIP \
"ls -l"

解説

秘密鍵、bastion.pemprivate.pemはローカル環境にあるものを利用します。

-o "ConnectTimeout 5"オプションは接続試行時のタイムアウト時間を設定しています。設定しないとサーバーに接続できない際に処理が終わりません。(環境による?)
今回は5秒としています。

-oオプションのProxyCommand='踏み台サーバーの接続情報'を使用すると自分の代わりにプライベートサーバーと通信を行うサーバー、つまりプロキシサーバー(踏み台)を設定できます。(この辺りを明確に説明している資料が見つけられないため、著者の解釈。簡単な解説は$ man ssh_configに記載あり)

-Wオプションは転送設定を行います。proxyサーバへ接続後、全てinput/output は %h:%p へ転送されユーザからの操作はすべて%h,%pに転送されます。
また%hはプロキシ経由で接続したいホスト、%pはそのホストのポート番号を意味します。(解説は$ man sshを確認)

ProxyCommand'の後には本来接続したいサーバーの接続情報を設定します。

最後に実行したいコマンドを"コマンド"のかたちで設定します。

コメント
@Tamera
2024年2月21日6:14
What NOT To Do Within The Best Accident Attorney Industry
top Accident attorney
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信