リモート ポート転送は TCP/1194 では機能しますが、サーバーのポート 443 が使用されていないにもかかわらず TCP/443 では機能しません。

リモート ポート転送は TCP/1194 では機能しますが、サーバーのポート 443 が使用されていないにもかかわらず TCP/443 では機能しません。

奇妙な問題が発生しています。

トンネリングエンドポイントとして機能する新しい Linode を立ち上げました。

ポート 1194 をリモート転送できたので、linode-server@1194 への接続がマシンのポート 1194 に正常に行われ、linode-server のポート 1194 に接続することで VPN に接続できるようになりました。

私が使用したコマンドは以下のとおりです(動作するコマンドです)。

ssh -N -R 1194:localhost:1194 [email protected]

今度は 443 もポート転送したいです。これを試しました:

ssh -N -R 443:192.168.1.122:443 [email protected]

私のローカル サーバーは意図的に 192.168.1.122 (localhost ではない) でリッスンしています。

しかし、上記のコマンドはサーバーのポート 443 を開くことができません。次のエラーが表示されます。

警告: リスン ポート 443 のリモート ポート転送に失敗しました

そこで、linode サーバーでポート 443 で何かが実行されているかどうかを確認しました。何も実行されていません。

user@linode-server:~$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:1194            0.0.0.0:*               LISTEN      7438/sshd: user       
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      411/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2377/sshd: /usr/sbi 
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1513/master         
tcp6       0      0 :::1194                 :::*                    LISTEN      7438/sshd: user       
tcp6       0      0 :::22                   :::*                    LISTEN      2377/sshd: /usr/sbi 
tcp6       0      0 :::25                   :::*                    LISTEN      1513/master         
udp        0      0 127.0.0.53:53           0.0.0.0:*                           411/systemd-resolve 
user@linode-server:~$ 

サーバーにソフトファイアウォールがありません。Linode クラウド ファイアウォールはオフになっていますが、それでも実行できません。

443 転送が機能しない理由が全く分かりません。

PS - トンネルの作成中、ユーザー認証は正常に機能しています。

これが役立つかどうかはわかりませんが、私の sshd_config は次のようになります。

user@linode-server:~$ cat /etc/ssh/sshd_config | grep -v "^#" | grep -v "^$"
Include /etc/ssh/sshd_config.d/*.conf
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
UsePAM yes
GatewayPorts yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem   sftp    /usr/lib/openssh/sftp-server
user@linode-server:~$

そして、明確に言うと、/etc/ssh/sshd_config.d/

linode-server 上の sshd からの詳細なログ出力:

...
Aug 14 09:00:32 connect sshd[9499]: Postponed publickey for pi from *HIDDEN: My home public IP* port 49180 ssh2 [preauth]
Aug 14 09:00:32 connect sshd[9499]: Accepted key RSA *HIDDEN* found at /home/pi/.ssh/authorized_keys:1
Aug 14 09:00:32 connect sshd[9499]: Accepted publickey for pi from *HIDDEN: My home public IP* port 49180 ssh2: RSA *HIDDEN* 
Aug 14 09:00:32 connect sshd[9499]: pam_unix(sshd:session): session opened for user pi by (uid=0)
Aug 14 09:00:32 connect systemd-logind[578]: New session 157 of user pi.
Aug 14 09:00:32 connect sshd[9499]: User child is on pid 9579
Aug 14 09:00:32 connect sshd[9579]: bind [0.0.0.0]:443: Permission denied
Aug 14 09:00:32 connect sshd[9579]: error: bind [::]:443: Permission denied
Aug 14 09:00:32 connect sshd[9579]: error: channel_setup_fwd_listener_tcpip: cannot listen to port: 443
...

なぜアクセスが拒否されるのですか? 上記で使用したリモート転送コマンドは、同じユーザーを使用します (成功したトンネルと失敗したトンネルの両方)。

見つけたばかりここ443 は特権ポートだからかもしれません。今、私は 443 でリモート転送を有効にするために root ユーザーを使用したくありません。linode-server をロックダウンし、root としてログインできません (また、root ログインを許可したくありません)。上記のリンクのとおり、setcaplinode-server で を使用できますが、トンネル オープン コマンドは実際にはローカルから実行されるため、どうすればよいでしょうか。他にどのような方法がありますか? linode-server でより高いポートを使用すれば機能するかもしれませんが、それはしたくありません。ポートを覚えておく必要がないように、ポート 443 にしたいです。

答え1

ローカル サーバーでは、代わりにポート 8080 (非特権ポート) からリモート ポート転送を開始しました。

ssh -N -R 8080:192.168.1.122:443 [email protected]

linode-server に、というツールをインストールしsocat、以下のコマンドを使用して linode サーバー上で 8080 から 443 にローカル転送したところ、動作するようになりました :)

sudo socat TCP-LISTEN:443,fork TCP:0.0.0.0:8080

答え2

問題は、ポート 443 で何もリッスンしていないことです。ポート 443 に接続するには、ポート 443 でリッスンしているプロセスが必要です。netstat を見ると、現在ポート 1194 でリッスンしているプロセスがあり、それがポート 1194 への接続が成功している理由であることがわかります。そのプロセスをポート 443 でリッスンするように変更する必要があります。

tcp        0      0 0.0.0.0:1194            0.0.0.0:*               LISTEN      7438/sshd: pi

関連情報