SSHトンネル:connect_to localhostポート22:失敗

SSHトンネル:connect_to localhostポート22:失敗

中間サーバー(uポート転送)を使用して、マイコンピュータからリモートコンピュータに接続したいと思います。リモートコンピュータで次のコマンドを実行します。

ssh -R 9300:localhost:22 user@middleserver

私のシステムには次のものがあります。

ssh remoteuser@middelserver -p 9300

しかし、私のシステムで次のエラーが発生します。

ssh_exchange_identification: Connection closed by remote host

以下はリモートシステムのログです。

debug1: client_request_forwarded_tcpip: listen localhost port 9309, originator xxx.xxx.xx.xx port 21470
debug2: fd 7 setting O_NONBLOCK
debug1: connect_next: host localhost ([::1]:22) in progress, fd=7
debug2: fd 7 setting TCP_NODELAY
debug3: fd 7 is O_NONBLOCK
debug3: fd 7 is O_NONBLOCK
debug1: channel 1: new [xx.xx.xx.xx]
debug1: confirm forwarded-tcpip
debug3: channel 1: waiting for connection
debug1: channel 1: connection failed: Connection refused
debug2: fd 8 setting O_NONBLOCK
debug1: connect_next: host localhost ([127.0.0.1]:22) in progress, fd=8
debug2: fd 8 setting TCP_NODELAY
debug3: channel 1: waiting for connection
debug1: channel 1: connection failed: Connection refused
connect_to localhost port 22: failed.
debug2: channel 1: zombie
debug2: channel 1: garbage collecting
debug1: channel 1: free: xxx.xxx.xxx.xxx, nchannels 2
debug3: channel 1: status: The following connections are open:
  #0 client-session (t4 r2 i0/0 o0/0 fd 4/5 cc -1)

問題は何ですか?

答え1

(報告されたエラーは、以下のステップ1の問題を示しています。)

まず、上記のポスターに従います。GatewayPorts yes/etc/ssh/sshd_config に追加し、ssh -R 行を次に変更します。

ssh -vvv -R *:9300:localhost:22 user@middleserver

(作業を開始したら -vvv を削除してください)

バインドアドレスを*に設定すると、ループバック(127.0.0.1 == localhostを含む「lo」)だけでなく、すべてのインターフェイスで接続が転送されます。 ifconfigインターフェイスを一覧表示します。つまり、eth0、lo、wlan0。*

それでも問題が解決しない場合は、次の問題を解決してください。

ステップ1) SSH経由でリモートシステムに接続できることを確認してください。

リモートシステム自体で以下を試してください。

ssh localhost

接続が拒否されたというメッセージが表示されたら、そのコンピュータでSSHを有効にする必要があります。

成功したら、ifconfigローカルの「inet 192.168.xxx.yyy」アドレスを入力して記録します。

ステップ2)ローカルマシンでSSHを試してください

次に、リモートコンピュータと同じローカルネットワーク上のコンピュータに移動し、SSHを介してリモートコンピュータに接続します。ssh [email protected]

失敗した場合は、リモートコンピュータのファイアウォールを確認してください(下記参照)。

成功すれば

ステップ3) 中間者(Man-in-the-Middle)システムでSSHを試してください。

中間者(man-in-the-middle)システムにログインし、そこから直接SSH接続を試みます。上記の場合は、すでにssh -R *:9300:localhost:22 middleuser@middleserverリモートシステムで実行されているため、中間システムにログインして以下を実行する必要があります。 ssh remoteuser@localhost -p 9300

成功すると、サーバーのファイアウォールに問題がある可能性があります。

iptablesを使用する前に、ファイアウォールマネージャを使用していることを確認してください。たとえば、「ufw」が使用されていることを確認するには、次のようにしますsudo ufw status。 iptablesを直接使用するよりもufwを使用する方がはるかに簡単です。

iptables -Lそして、ポート9300が開いていることを確認してください(これはiptablesの調査が必要です...簡単ではありません)。ヒント:httpの横にポート9300がリストされている場合は、同様の方法でhttpが開いていることを確認してください。 9300が以下にリストされている場合、「すべて拒否」タイプコマンドがその前にリストされていると、そのアドレスに到達できない可能性があります。指定港として記載することもできます。cat /etc/services | grep 9300しかし、この場合、名前は提案されていません。

ステップ4)もう一度ログインしてみてください。

ssh remoteuser@middleserver -p 9300

答え2

sshd中間サーバーの設定オプションがyesに設定されていない場合GatewayPorts(デフォルトはno view man 5 sshd_options)、転送でバインドアドレスを指定する必要があります。

ssh -R *:9300:localhost:22 user@middleserver

(ローカルコンピュータのIPアドレスを指定することで、より制限的にすることができます。)

それ以外の場合は、ループバックデバイスのみが中間サーバーに渡されます。

答え3

私の場合、私の質問はOPよりはるかに簡単です。私はこれを行うだけです:

sudo apt install openssh-server

リモートコンピュータから。

関連情報