web-dev-qa-db-ja.com

パブリックアクセス用にautosshポートを開く

NATトラバーサル を介してローカルネットワーク上のRaspberry Pi ZeroWにアクセスしたい。私は このチュートリアル(中国語) をフォローしていましたが、以下に説明する問題があります。

アイデアは、ローカルRaspberry PiのSSHポートをパブリックIPを使用してリモートマシンに転送し、そこからPiにアクセスすることです。セキュリティ上の理由から、実際の値をnalzok@remote-ipに置き換えました。

Raspberry Pi(ローカルネットワークからのアクセス)

pi@nalzoks-pi:~ $ autossh -M 30000 -o "StrictHostKeyChecking=false" -o "ServerAliveInterval 10" -o "ServerAliveCountMax 3" -NR 20000:localhost:22 nalzok@remote-ip

リモートサーバー上

リモートサーバーからPiへのロギングに問題はありません

nalzok@iZuf68c45z6sk19lln4zvsZ:~$ ssh -p20000 pi@localhost
Linux nalzoks-pi 4.19.66+ #1253 Thu Aug 15 11:37:30 BST 2019 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Sep  8 10:12:30 2019 from ::1
pi@nalzoks-pi:~ $

私のコンピューター上(ローカルネットワーク外)

ただし、コンピューターから直接アクセスすることはできません。

$ ssh -p20000 pi@remote-ip
ssh: connect to Host remote-ip port 20000: Connection refused

リモートサーバー上

リモートサーバーのポート20000と30000の両方でファイアウォールが開かれていると確信しています。自分でトラブルシューティングを試みたとき、これらのポートはローカルアクセスでのみ使用可能であることに気付きました。

nalzok@iZuf68c45z6sk19lln4zvsZ:~$ Sudo lsof -i -P -n | grep LISTEN
[Sudo] password for nalzok:
sshd        601    root    3u  IPv4  13223      0t0  TCP *:22 (LISTEN)
sshd      12503    root    8u  IPv4 879255      0t0  TCP 127.0.0.1:1234 (LISTEN)
sshd      13026  nalzok    9u  IPv4 885817      0t0  TCP 127.0.0.1:30000 (LISTEN)
sshd      13026  nalzok   10u  IPv4 885818      0t0  TCP 127.0.0.1:20000 (LISTEN)

パブリックアクセス用にポート20000を開くにはどうすればよいですか?

1
nalzok

このリモート転送の動作は、 SSHのマニュアルページ に明示的に記載されています。

デフォルトでは、TCPサーバー上のリスニングソケットはループバックインターフェイスにのみバインドされます。これは、bind_addressを指定することでオーバーライドできます。空のbind_address、またはアドレス '*'は、リモートソケットはすべてのインターフェイスでリッスンする必要があります。リモートbind_addressの指定は、サーバーのGatewayPortsオプションが有効になっている場合にのみ成功します(sshd_config(5)を参照)。

GatewayPorts option がサーバーで有効になっている場合、それを利用するには、次のようにリモート転送を指定します。

-R *:20000:localhost:22
1
chuckx