1つのコマンドで、コンピューターAからコンピューターBを経由してコンピューターCにssh接続を確立し、コンピューターCのシェルにアクセスできるようにする方法はありますか?
しわ(-Lオプションを使用してssh接続を転送することを除外しているように見える)は、コンピューターBのアカウントへのパスワードがあり、コンピューターBのアカウントがコンピューターCのアカウントへの接続を許可されているが、コンピューターCのアカウントのパスワードがありません。
1つのコマンドで、コンピューターAからコンピューターBを経由してコンピューターCにssh接続を確立し、コンピューターCのシェルにアクセスできるようにする方法はありますか?
しわ(-Lオプションを使用してssh接続を転送することを除外しているように見える)は、コンピューターBのアカウントへのパスワードがあり、コンピューターBのアカウントがコンピューターCのアカウントへの接続を許可されているが、コンピューターCのアカウントのパスワードがありません。
回答:
コンピューターCにログインしたいだけで、実際にはAからCまで何もトンネルしないようにしたいので、これでうまくいくはずです。
ssh -t computer-b "ssh computer-c"
最初にコンピューターBとコンピューターCのパスワードを2回入力する必要があるかもしれませんが、sshの鍵ペア認証を使用することでこれを回避できます。
ssh -t computer-b "ssh -t computer-c 'ssh computer-d'"
:D
あなたはおそらく、SSHののProxyCommandを使用したい:http://benno.id.au/blog/2006/06/08/ssh_proxy_command
ProxyCommand
を参照してくださいman ssh_config
。の活用をお勧めしますProxyCommand
。元のシナリオを見てみましょう:
~/.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を介して自動的にプロキシされます。