単一のコマンドで中間マシンを介してSSH接続をトンネリングする


10

1つのコマンドで、コンピューターAからコンピューターBを経由してコンピューターCにssh接続を確立し、コンピューターCのシェルにアクセスできるようにする方法はありますか?

しわ(-Lオプションを使用してssh接続を転送することを除外しているように見える)は、コンピューターBのアカウントへのパスワードがあり、コンピューターBのアカウントがコンピューターCのアカウントへの接続を許可されているが、コンピューターCのアカウントのパスワードがありません。


回答:


8

コンピューターCにログインしたいだけで、実際にはAからCまで何もトンネルしないようにしたいので、これでうまくいくはずです。

ssh -t computer-b "ssh computer-c"

最初にコンピューターBとコンピューターCのパスワードを2回入力する必要があるかもしれませんが、sshの鍵ペア認証を使用することでこれを回避できます。


1
よろしくお願いいたします。私がフォローアップを依頼するほど大胆かもしれない場合。単一のコマンドでAからCにファイルをscpする方法はありますか?
正気度

それは少しトリッキーです。これは、ミックスにtarを追加することで実現できますが、ファイルが1つだけで、コンピューターBにしばらく保持するためのディスク領域がある場合は、2つのステップでコピーする方がはるかに簡単です。
af。

これを3回行うこともできます。ssh -t computer-b "ssh -t computer-c 'ssh computer-d'":D
2013

0

あなたはおそらく、SSHののProxyCommandを使用したい:http://benno.id.au/blog/2006/06/08/ssh_proxy_command


コンピューターCのパスワードがないため、これを機能させる方法を見つけることができません。このアプローチでは、パスワードが必要なようです。ただし、このアプローチはよりエレガントに見えるため、提案を受け入れる必要があります。
正気度

0

sshキーを使用している場合、マシンBの新しいキーを生成し、それを使用してAからBに接続できます。マシンBでは、次のように追加できます。

command="ssh C" ssh-....

~/.ssh/authorized_keysファイル。つまり、そのsshキーでBに接続するたびに、ssh Cコマンドが実行されます。

これがscpで動作するかどうかはわかりません。


0

使用する ProxyCommand

を参照してくださいman ssh_config。の活用をお勧めしますProxyCommand。元のシナリオを見てみましょう:

  • コンピューターA(コンピューター)
  • コンピューターB(プロキシホスト名)
  • コンピューターC(コンピューターBからSSH経由でのみ到達可能)

~/.ssh/config以下の内容で編集してください。

Host computerb
    HostName <hostname or IP of Computer B>

Host computerc 192.168.35.*
    ProxyCommand ssh computerb nc -w 180 %h %p

これで、コンピュータCに透過的に到達できるようになります。

ssh computerc

この方法の利点

より安全に

秘密鍵が必要なのは、コンピューターA(コンピューター)だけです。ncコマンドは、SSHを経由してトラフィックを暗号化しますするプロキシとして動作します。これには認証が含まれます。秘密鍵を複数のサーバーに配布することは非常に悪い考えです(秘密鍵を持つ侵害されたサーバーは最終的に秘密鍵を侵害するため)。

複数の目的地に一致

を使用して、複数の宛先コンピュータを照合できますHost。単一のコンピューター、または特定のネットワーク(192.168.35.0/24上記の例のような)内の任意のコンピューター。コンピューターBを介してプロキシします。これはエイリアスとしても機能します。

ssh 192.168.35.27

上記の例では、コンピューターBを経由してプロキシーを行い、IPアドレスに到達します。

デイジーチェーンプロキシ

この方法を使用すると、必要な数の自動プロキシをデイジーチェーン接続できます。たとえば、コンピュータCからのみ到達可能なコンピュータDを追加すると、透過的に機能します。

Host computerd
    ProxyCommand ssh computerc nc -w 180 %h %p

ssh computerd上記のssh_config例では、コンピュータCとコンピュータBを介して自動的にプロキシされます。


私はProxyCommandの代わりにProxyJump を使用してますが、正常に動作します。オプションが増えたようです。
fgiraldeau
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.