サーバー経由で直接 ssh および scp を実行する方法は?

サーバー経由で直接 ssh および scp を実行する方法は?

次のようにして server2 に接続します。

home$ ssh server1
server1$ ssh server2
server2$

また、時々このように scp を実行する必要があり、これには余分な時間がかかります。

home$ ssh server1
server1$ scp server2:file .
server1$ exit
home$ scp server1:file .

自宅から 1 つのコマンドでこれを行う方法はありますか? 公開キー認証を使用していますが、パスワードでも機能すると便利です。

答え1

MobaXtermを使用することをお勧めします。

  • ここからダウンロードしてください:http://mobaxterm.mobatek.net/download-home-edition.html
  • 「新しいセッション」をクリックし、「ssh」を選択します
  • 「リモートホスト名」フィールドに「server2」のコンピュータ名またはIPアドレスを指定します。
  • 「SSHバウンス(ゲートウェイSSHサーバー経由で接続)」フィールドに「server1」のコンピューター名またはIPアドレスを指定します。

これにより、新しい SSH コマンドが「server2」コンピューターに直接起動されます。ウィンドウの左側には、グラフィカル SFTP ファイル転送ツールも用意されており、これも「server2」に直接接続されます。

答え2

SSH トンネリングは次のように使用できます。

ssh -f server1 -L 8888:server2:22 -N

これにより、ローカル マシンのポート 8888 でソケットが開かれ (他のプロセスがそのポートを使用していないと仮定)、server1 を介して server2 (SSH がポート 22 で実行されていると仮定) への接続がトンネルされます。-Nおよび-fフラグは、SSH にバックグラウンドにフォークするように指示します (トンネルを停止する場合は、プロセスを強制終了する必要があります)。

これで、server2からscpファイルを取得することができます。

scp -P 8888 localhost:file

答え3

home$ server1 "ssh server2"

しかし、より多くのサーバーが関係する場合、コマンド文字列をエスケープするのは困難です。

答え4

ダイナミックトンネルでSOCKS5を使用する

最初のマシンへの動的 SSH トンネルを作成します。次に、最初の接続を SOCKS5 プロキシとして使用して、リモート ネットワーク上の 2 番目のホストにアクセスします。

これは putty 経由で簡単に設定できます。プロキシは何度でも再利用できます。一部のプログラムは SOCKS5 を直接サポートします。putty や ssh などです。

Linux では、プロキシチェーンを使用して、SOCKS5 をネイティブにサポートしていないプログラムをプロキシ化できます。Windows では、Proxycap が便利です。RDP でうまく機能します。

Putty を使用してこれを設定するには:

最初のホスト設定ページのトンネルの下で:

  • 動的トンネルを作成する
  • ポートを9050に設定します。
  • 宛先部分は動的であるため、空白のままにしておきます。
  • 設定を保存します。(セッション ページから実行します。)

次に、2 番目のホストの構成で、プロキシの下に次の項目を設定します。

  • SOCK55を選択します。
  • プロキシホスト名を127.0.0.1に変更します
  • ポートを9050に設定する
  • その後、セッションの残りを通常通りに設定します
  • 設定を保存する

2番目のホストに接続するには、まず最初のホストに接続してログインする必要があります。その後、プロキシされたSSH接続を介して2番目のホストに接続できるようになります。

ssh_config エントリを使用して、コマンドラインからこれを実行することもできます。 http://www.undeadly.org/cgi?action=article&sid=20070925181947

関連情報