SSHを使用して別のPCを介してPCに接続するにはどうすればよいですか


13

私が持っている3台のコンピュータを。

PC1PC2はプライベートLAN上にあり、PC1PC2として認識されています。192.168.0.2

PC2PC3は別のLAN上にあり、PC2PC3に認識されています。192.168.123.101

SSH を使用してPC3からPC1に接続するにはどうすればよいですか。

次のようなものがあります:

ssh user@192.168.0.2 -via user@192.168.123.101

回答:


19
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

1
+1はい、そして私はいくつかの詳細を含む同様の回答stackoverflow.com/questions/1010808/1122282#1122282を持っています。
ephemient

netcatのインストールに必要
Stefan

4

SSHを使用すると、明確な解決策があります。

  1. ローカルマシンで~/.ssh/config、次のように設定します。

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. 接続するゲートウェイとエンドサーバーの両方で、ローカルクライアントの公開鍵が ~/.ssh/authorized_keys

  3. ゲートウェイマシン~/.ssh/authorized_keysで、クライアントの公開鍵を指定する行の先頭に、次のように強制コマンドを追加するように変更する必要があります。

    command="ssh -A user_name@ServerTheGatewaySees.ButTheClientCant.net" ...yourPublicKey....
    

-Aあなたはパスワードのすべての時間を送信するために好きではない場合は、エージェントを転送することです...

このように、あなたがそれのような何かをssh WhatYouWillCallTheConnectionするときはいつでも、ゲートウェイをまっすぐ走って、あなたを反対側のサーバーに透過的に接続します。


2
ssh -Aゲートウェイマシンの管理者を信頼しない場合は使用しないでください。彼は秘密鍵を取得できませんが、でゲートウェイに接続している限りssh -A、転送されたエージェントを使用して他のマシンに接続できます。
ジャンダー、

2

ポートフォワーディングが役立つ場合があります。
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  

乾杯!


1

2017+( 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

0

私が知っている唯一の解決策は、Belierを使用したsshスクリプトです。

Belierでは、SSH接続を介してリモートコンピューターでシェルを開いたり、コマンドを実行したりできます。Belierの主な特徴は、仕事を実現する前に複数の中間コンピューターを通過できることです。

しばらく前にMITリンカーン研究所のホームページでこのREADME.sshhopを見つけましたが、それ以上の情報を見つけることができませんでした。誰かがもっと知っていますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.