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

원격 컴퓨터에서.

관련 정보