당신이 찾고있는 것을 리버스 터널이라고합니다. 스위치를 ssh
통해 제공합니다 -R
.
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side. This
works by allocating a socket to listen to port on the remote side,
and whenever a connection is made to this port, the connection is
forwarded over the secure channel, and a connection is made to host
port hostport from the local machine.
OP가 답변으로 발견 한 구문은 다음과 같습니다.
$ ssh -f -N -R vvv:localhost:22 w.x.y.z
예
내가 네트워크에서이 컴퓨터를 가지고 lappy
와 remotey
. 따라서 다음 명령을 실행합니다 lappy
.
$ ssh -f -N -R 12345:localhost:22 remotey
작동하는지 확인할 수 있습니다.
$ ps -eaf|grep "[l]ocalhost:22"
saml 27685 1 0 11:10 ? 00:00:00 ssh -f -N -R 12345:localhost:22 remotey
이제 ssh
원격 시스템으로 분리 remotey
하여이 명령을 실행하면 원격 시스템의 로컬 인터페이스에서 포트 12345의 연결을 수락하고 있음을 알 수 있습니다.
$ netstat -an|grep :12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN
tcp 0 0 ::1:12345 :::* LISTEN
연결 테스트
역방향 ssh 터널이 다음과 같이 작동하고 있음을 알 수 있습니다.
로그인 remotey
[user@lappy ~]$ ssh remotey
리버스 터널 포트 테스트
[user@remotey ~]$ ssh -p 12345 localhost
이제 기저귀에 다시 있어야합니다
user@localhost's password:
Last login: Thu Aug 1 17:53:54 2013
/usr/bin/xauth: creating new authority file /home/user/.Xauthority
[user@lappy ~]$
localhost ( lo
) 이외의 인터페이스에있는 포트 ?
이와 같은 명령을 시도해도 작동하지 않거나 항상 localhost ( lo
) 인터페이스 의 포트에 바인딩되면 머리가 긁힐 수 있습니다 .
예를 들면 다음과 같습니다.
lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey
참고 : 이 명령은 포트 12345 @ remotey를 열고 포트 22 @ lappy에 대한 연결을 터널링하도록 지시합니다.
그런 다음 원격에서 :
remotey$ netstat -an|grep 12345
tcp 0 0 127.0.0.1:12345 0.0.0.0:* LISTEN
진행중인 것은 sshd
의 구성 으로이 작업을 수행 할 수 없다는 것입니다. 실제로이 기능을 사용하지 않으면 ( GatewayPorts
) ssh
터널 포트를 localhost 이외의 다른 것에 바인딩 할 수 없습니다 .
GatewayPort 활성화
remotey$ grep GatewayPorts /etc/ssh/sshd_config
#GatewayPorts no
사용하려면 다음 파일을 편집하십시오 /etc/ssh/sshd_config
.
GatewayPorts clientspecified
그리고 다시 시작하십시오 sshd
.
remotey$ sudo service sshd restart
이제 다시 시도하면 다음과 같은 효과가 나타납니다.
lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey
이번에는 원격에서 다시 확인하십시오.
remotey$ netstat -anp | grep 12345
tcp 0 0 192.168.1.3:12345 0.0.0.0:* LISTEN 9333/sshd
참고 : 위에서 sshd
포트 12345의 연결을 위해 IP 주소가 192.168.1.3 인 인터페이스 에서 프로세스가 수신되고 있음을 알 수 있습니다 .
연결 테스트 (부품 deux)
이번에 테스트 할 때 변경된 설정으로. 가장 큰 차이점은 더 이상 localhost에 연결할 필요가 없다는 것입니다!
로그인 remotey
[user@lappy ~]$ ssh remotey
역방향 연결 테스트
[user@remotey ~]$ ssh -p 12345 remotey
이제 기저귀에 다시 있어야합니다
root@remotey's password:
Last login: Wed Aug 21 01:49:10 2013 from remotey
[user@lappy ~]$
참고 문헌