나는 한동안 3대의 머신( A
, B
, ) 에서 SSH 설정을 사용해 왔습니다 . 내가 연결하고 싶은 두 개의 서로 다른 LAN에 있는 컴퓨터 C
이자 공개 주소가 있는 내 상자 A
입니다 .C
B
나는 기계에서 A
다음을 수행합니다.
ssh -p 443 -f -N -R 1987:localhost:22 hostname-of-B
기계에는 C
다음이 있습니다 ~/.ssh/config
.
Host hostB
User user-of-B
HostName hostname-of-B
Host hostA
User user-of-A
ProxyCommand ssh -o 'GatewayPorts yes' -q hostB nc -q0 localhost 1987
그래서 C
에서 다음으로 연결할 수 있습니다 A
.
ssh hostA
B
이 설정은 인터넷 연결이 좋지 않은 다른 컴퓨터로 전환해야 할 때까지 훌륭하게 작동했습니다 . 이제 연결 상태가 양호 A
함에도 불구하고 모든 것이 매우 느립니다.C
C
A
그래서 에서 까지 초기 연결을 설정한 후 에서 까지 직접 연결을 설정하는 것이 가능한지 알고 싶습니다 B
. 이렇게 하면 방정식이 제거되고 연결 속도가 다시 빨라집니다.A
C
B
답변1
아니요, 불가능합니다. 다시 게시하려면 공개적인 내용이 필요합니다. 또는 한 서버에서 다른 서버로의 각 연결 가시성을 위해.
답변2
공개 SSH 액세스가 가능한 다른 머신 X가 있는 경우 느린 B를 피할 수 있습니다. 이는 집에 있는 머신일 수도 있고 연결 상태가 좋은 매우 저렴한 임대 공용 가상 머신일 수도 있습니다.
C에서는 X에서 C로 역방향 터널을 열 수 있습니다.
ssh -Nf -R 10022:localhost:22 user-of-X@hostname-of-X
그런 다음 A의 X를 통해 또 다른 "hop-config"를 추가하십시오.
Host hostAviaX
User user-of-X
ProxyCommand ssh -o 'GatewayPorts yes'-q hostB nc -q0 localhost 10022
A에서 ssh hostAviaX
작동해야 합니다 .
A가당신의라우터를 제어하는 네트워크의 클라이언트 컴퓨터에서 A가 공개 SSH 액세스를 갖도록 포트 전달을 활성화할 수 있습니다. 이 경우 다른 X가 필요하지 않으며 위 예에서 X == A를 바꿀 수 있습니다.