SSH 터널 ABC가 주어지면 B를 제외하는 방법은 무엇입니까?

SSH 터널 ABC가 주어지면 B를 제외하는 방법은 무엇입니까?

나는 한동안 3대의 머신( A, B, ) 에서 SSH 설정을 사용해 왔습니다 . 내가 연결하고 싶은 두 개의 서로 다른 LAN에 있는 컴퓨터 C이자 공개 주소가 있는 내 상자 A입니다 .CB

나는 기계에서 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

CA그래서 에서 까지 초기 연결을 설정한 후 에서 까지 직접 연결을 설정하는 것이 가능한지 알고 싶습니다 B. 이렇게 하면 방정식이 제거되고 연결 속도가 다시 빨라집니다.ACB

답변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를 바꿀 수 있습니다.

관련 정보