回答:
ssh -o 'ProxyCommand ssh -W %h:%p user@192.168.123.101'
その後、単に実行することができますssh PC1。
でエイリアスを使用するのが最適です~/.ssh/config。
Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p user@192.168.123.101
-Wオプションのない古いバージョンのOpenSSH (これは≤5.4を意味すると思います)の場合、netcatがPC2で利用可能であることを確認し、
Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh user@192.168.123.101 nc %h %p
SSHを使用すると、明確な解決策があります。
ローカルマシンで~/.ssh/config、次のように設定します。
host WhatYouWillCallTheConnection
hostname the.gateway.server.address.com
user YourUsernameOnTheGateway
接続するゲートウェイとエンドサーバーの両方で、ローカルクライアントの公開鍵が ~/.ssh/authorized_keys
ゲートウェイマシン~/.ssh/authorized_keysで、クライアントの公開鍵を指定する行の先頭に、次のように強制コマンドを追加するように変更する必要があります。
command="ssh -A user_name@ServerTheGatewaySees.ButTheClientCant.net" ...yourPublicKey....
-Aあなたはパスワードのすべての時間を送信するために好きではない場合は、エージェントを転送することです...
このように、あなたがそれのような何かをssh WhatYouWillCallTheConnectionするときはいつでも、ゲートウェイをまっすぐ走って、あなたを反対側のサーバーに透過的に接続します。
ssh -Aゲートウェイマシンの管理者を信頼しない場合は使用しないでください。彼は秘密鍵を取得できませんが、でゲートウェイに接続している限りssh -A、転送されたエージェントを使用して他のマシンに接続できます。
ポートフォワーディングが役立つ場合があります。
PC1から:
~# ssh -fN -L 22:PC3:7777 -l <user> PC2
7777は、任意のポートにすることができます(まだ使用されていない場合)。私はその数と、+ 1で管理できる「注文」(7778、7779など)が好きです。
これが完了すると、PC1のローカルポート7777からPC3のポート22への「透過」トンネルが作成されます。次のコマンドを発行するだけです。
~# ssh -l <user> -p 7777 localhost
そして、あなたはPC3にいる必要があります。
SOCKSプロキシを確立したい場合は、-Dを使用してポートを動的に転送することもできます。
~# ssh -D <someport> -fN -L 22:PC3:7777 -l <user> PC2
乾杯!
2017+(ssh v7.3 以降)-これに対する答えはProxyJumpです:
ssh -J user@jumphost user@destination
は以下の略です。
ssh -o "ProxyJump user@jumphost" user@destination
これは、以下のようなスニペットを使用ssh destして短縮できます~/.ssh/config。
Host jump
User MyJumpHostUser
Hostname Jump.host.tld
Host dest
ProxyJump jump
User MyDestUser
Hostname des.tin.ati.on
私が知っている唯一の解決策は、Belierを使用したsshスクリプトです。
Belierでは、SSH接続を介してリモートコンピューターでシェルを開いたり、コマンドを実行したりできます。Belierの主な特徴は、仕事を実現する前に複数の中間コンピューターを通過できることです。
しばらく前にMITリンカーン研究所のホームページでこのREADME.sshhopを見つけましたが、それ以上の情報を見つけることができませんでした。誰かがもっと知っていますか?