sshで踏み台経由時のショートカット

More than 5 years have passed since last update.


リモートホストでコマンドの実行

リモートホストAにコマンドを実行したいとき



$ ssh hoge@hostA "実行したいコマンド"

で,この場合ホストAにssh接続してさらにコマンドを実行させることができる.

これを使って,踏み台経由でsshする際,ショートカットできないか試してみる.


通常の踏み台経由でのssh接続

例えばhostAは外部ネットワークからssh接続する際に踏み台サーバであるhostBを経由する必要があるとすると



local$ ssh hoge@hostB

hostB$ ssh hoge@hostA

hostA$

と,2段階に分けてssh接続作業をしなければならない.


$ ssh hoge@hostA "実行したいコマンド"を応用

そこで



$ ssh hoge@hostB "ssh hostA"



で,ssh接続したhostBにおいてhostAへのssh接続コマンドを実行させてみる

以下のエラーが発生



Pseudo-terminal will not be allocated because stdin is not a terminal.

Pseudo-terminalとは疑似端末のことで,それが割り当てられていないとのこと.

一回ぽっきりのコマンド実行のために模擬端末を割り当てない仕様になっている.


-tオプション

というわけで,模擬端末を割り当ててやる必要がある.

local$ ssh -t hoge@hostB "ssh hostA"

hostA$

-tオプションをつけてやることで,コマンドを実行する際に模擬端末をつけてやることができる.