答え1
サーバー B が 経由でアクセス可能でssh
、 のみが必要な場合ssh
(直接scp
または ではないsftp
)、これも非常にうまく機能します。
ssh -t $SERVER_A ssh $SERVER_B
この-t
オプションは、相手側で単一のコマンドを実行している場合でも、疑似 tty の割り当てを強制します。ssh
疑似 tty が必要なので、これは役に立ちます。
のネストされたインスタンスを 2 つ使用しているためssh
、内部セッションのエスケープ文字はEnter ~ ~(2 つのチルダ) です。1 つのチルダは、エスケープを最初のシェルに送信します。
答え2
ssh
ポート転送を使用する以外に、これを実行するための組み込みの方法はありません。
ただし、かなりうまく機能する方法があります。それは、ProxyCommand
ssh の設定です。これをホストごとに指定し~/.ssh/config
、それを使用して、リモート ssh ポートに接続するために実行するコマンドを指定できます。
私はこれをいくつかのホストで使用しています:
host serverB.example.com serverB
ProxyCommand /usr/bin/ssh serverA.example.com /usr/bin/nc %h %p
ssh(1)
詳細についてはマニュアル ページを参照してください。また、接続時に転送するために使用しているコマンドnc(1)
についてはパッケージを参照しnetcat
てください。(ただし、TCP 接続を確立し、標準入力と標準出力を渡すものであれば何でも使用できます。)