プライベートIPへのssh


18

プライベートIP 10.150.5.141(制限されたファイアウォール)を持つように構成されたCentOS(コンピューターA)のコンピューターがあり、実際のIP wxyzでインターネットとArchLinux VPS(コンピューターB)にアクセスできます

コンピューターAに接続するためにコンピューターBにアクセスできる別のpc(コンピューターC)を作成するにはどうすればよいですか?コンピューターCはコンピューターAに直接接続できません(Aのプライベートネットワーク上にあるため)?

トンネルが別のcomputer:portへのローカルポートを開くことができることは知っていますが、逆の方法はありますか?

sshコンピューターB を使用してコンピューターAにアクセスしたいが、コンピューターA のネットワークが制限されているため、コンピューターBはコンピューターAにアクセスできません

私はこのようなものが欲しい:

ssh -connect-to w.x.y.z:22 -open-port vvv -forward-to 10.150.5.141 -port 22

ssh w.x.y.z:vvvがコンピュータCからそれをプライベートネットワークに転送するように10.150.5.141:22

回答:


14

あなたが探しているものはリバーストンネルと呼ばれます。スイッチsshを介して提供します-R

-R [bind_address:]port:host:hostport
       Specifies that the given port on the remote (server) host is to 
       be forwarded to the given host and port on the local side.  This 
       works by allocating a socket to listen to port on the remote side, 
       and whenever a connection is made to this port, the connection is
       forwarded over the secure channel, and a connection is made to host 
       port hostport from the local machine.

OPが回答で発見したように、構文は次のとおりです。

$ ssh -f -N -R vvv:localhost:22 w.x.y.z

私は、ネットワーク上のパソコン2台を持っている、lappyremotey。そこで、次のコマンドを実行しますlappy

$ ssh -f -N -R 12345:localhost:22 remotey

私はそれが機能していることを確認できます:

$ ps -eaf|grep "[l]ocalhost:22"
saml     27685     1  0 11:10 ?        00:00:00 ssh -f -N -R 12345:localhost:22 remotey

sshリモートシステムに個別remoteyにアクセスしてこのコマンドを実行すると、リモートシステムのローカルインターフェイスのポート12345で接続を受け入れていることがわかります。

$ netstat -an|grep :12345
tcp        0      0 127.0.0.1:12345             0.0.0.0:*                   LISTEN      
tcp        0      0 ::1:12345                   :::*                        LISTEN      

接続をテストする

次のようにリバースsshトンネルが機能していることがわかります。

  1. にログインする remotey

    [user@lappy ~]$ ssh remotey
    
  2. リバーストンネルポートをテストする

    [user@remotey ~]$ ssh -p 12345 localhost
    
  3. これでlappyに戻るはずです

    user@localhost's password: 
    Last login: Thu Aug  1 17:53:54 2013
    /usr/bin/xauth:  creating new authority file /home/user/.Xauthority
    [user@lappy ~]$ 
    

localhost(lo)以外のインターフェース上のポート?

このようなコマンドを試しても機能しないように見える場合、または常にlocalhost(lo)インターフェースのポートにバインドされている場合は、頭をかきむしられている可能性があります。

例えば:

lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey

注:このコマンドは、ポート12345 @ remoteyを開き、ポート22 @ lappyへの接続をトンネルするように指示します。

次に、リモートで:

remotey$ netstat -an|grep 12345
tcp        0      0 127.0.0.1:12345              0.0.0.0:*                   LISTEN   

何が起こっているのはあるsshdの構成は、あなたがこれを行うには許可されていません。実際、この機能を有効GatewayPortsにしないと()、sshローカルホスト以外にトンネルポートをバインドできません。

GatewayPortsを有効にする

remotey$ grep GatewayPorts /etc/ssh/sshd_config
#GatewayPorts no

有効にするには、このファイルを編集します/etc/ssh/sshd_config

GatewayPorts clientspecified

そして再起動sshd

remotey$ sudo service sshd restart

もう一度試してみると、後の効果が表示されます。

lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey

そして今度はリモートで確認してください:

remotey$ netstat -anp | grep 12345
tcp        0      0 192.168.1.3:12345           0.0.0.0:*                   LISTEN      9333/sshd

注:上記ではsshd、ポート12345で接続するために、プロセスがIPアドレス192.168.1.3を持つインターフェイスでリッスンしていることがわかります。

接続のテスト(パートdeux)

今度は、テスト時に変更したセットアップを使用します。主な違いは、ローカルホストに接続する必要がなくなったことです!

  1. にログインする remotey

    [user@lappy ~]$ ssh remotey
    
  2. 逆接続をテストする

    [user@remotey ~]$ ssh -p 12345 remotey
    
  3. これでlappyに戻るはずです

    root@remotey's password: 
    Last login: Wed Aug 21 01:49:10 2013 from remotey
    [user@lappy ~]$ 
    

参照資料


同じマシン上で0.0.0.0:12346から127.0.0.1:12345にトンネルを作成する方法はありますか?
Kokizzu

1
@Kokizzu-私はこれを設定しようとしましたが、私はあなたが何を求めているのかについて、アクセルに包まれています。私は、あなたが望むように聞こえるこれこれを見つけたanattatechnologies.com/q/2012/08/chaining-ssh-tunnels。私は今夜​​遅くにそれを試してみて、それで遊んでください、そしてあなたがそれで進歩をするかどうか知らせてください。
slm

それは私が意図したものではなく、127.0.0.1(コンピューターB上の)の代わりにwxyz:vvv2にバインドするため、他の人も使用できるようになります
。– Kokizzu

1
@Kokizzu-アップデートを参照してください。
slm

2

コンピューターBはコンピューターAにアクセスできないため、最初にコンピューターAからリモートトンネルを開く必要があります。

ssh user@computerB -R vvv:localhost:22

感謝しますが、localhostをリッスンしたサービスに転送されたeth0のIP上のポートを開く方法はありますか?
Kokizzu

1

気にしないで、私は答えを見つけました:

ssh -f -N -R vvv:localhost:22 w.x.y.z

コンピューターAから

編集:TL; DR、正しい解決策:

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