別のサーバーを使用してサーバーに ssh するにはどうすればいいですか?

別のサーバーを使用してサーバーに ssh するにはどうすればいいですか?

重複の可能性あり:
複数のホスト経由の ssh

接続するにはサーバーBまずSSHで接続してサーバーAアクセスするためのコマンドラインは何ですかサーバーB?

答え1

サーバー B が 経由でアクセス可能でssh、 のみが必要な場合ssh(直接scpまたは ではないsftp)、これも非常にうまく機能します。

ssh -t $SERVER_A ssh $SERVER_B

この-tオプションは、相手側で単一のコマンドを実行している場合でも、疑似 tty の割り当てを強制します。ssh疑似 tty が必要なので、これは役に立ちます。

のネストされたインスタンスを 2 つ使用しているためssh、内部セッションのエスケープ文字はEnter ~ ~(2 つのチルダ) です。1 つのチルダは、エスケープを最初のシェルに送信します。

答え2

sshポート転送を使用する以外に、これを実行するための組み込みの方法はありません。

ただし、かなりうまく機能する方法があります。それは、ProxyCommandssh の設定です。これをホストごとに指定し~/.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 接続を確立し、標準入力と標準出力を渡すものであれば何でも使用できます。)

関連情報