
이상한 문제가 있습니다.
터널링 종점 역할을 할 새로운 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-server에서 포트 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 전달이 작동하지 않는 이유를 전혀 모르겠습니다.
추신 - 터널을 생성하는 동안 사용자 인증이 제대로 작동합니다.
이것이 도움이 될지는 모르겠지만 내 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에서 원격 전달을 활성화하고 싶지 않습니다. linode-server를 잠갔고 루트로 로그인할 수 없습니다(그리고 루트 로그인을 허용하고 싶지 않습니다). 위 링크에 따라 linode-server에서 을 사용할 수 있지만 setcap
터널 열기 명령이 실제로 내 로컬에서 실행되므로 어떻게 해야 합니까? 내 대안은 무엇입니까? 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