SSH - 세 컴퓨터 사이에 터널을 설정하는 방법은 무엇입니까?

SSH - 세 컴퓨터 사이에 터널을 설정하는 방법은 무엇입니까?

ComputerA는 putty를 통해 서버의 포트 77에 연결되고 서버의 포트 6666에서 ComputerA의 포트 22로 역방향 터널이 설정됩니다. ComputerA에는 ComputerA_user_name이라는 사용자 계정으로 설정된 SSH 서버도 있습니다.

명령을 사용하여 ComputerB에서 서버로 SSH를 통해 연결할 수 있습니다 ssh admin@Server -p 9000 -D 6000. 그런 다음 내 컴퓨터 ComputerB에서 포트 6000에 양말 프록시 연결을 설정하고 서버를 통해 실행하는 Ruby 프로그램을 실행했습니다. Ruby 프로그램이 프록시를 통해 ComputerB에서 ComputerA로 연결되도록 하는 방법은 무엇입니까?

ssh -D 9000 localhost -p 6666 -l ComputerA_user_name지금 시도하고 있는 것은 ComputerB에서 서버로, 그리고 서버에서 ComputerA로 바인딩하기 위해 ComputerB에서 SSH로 연결한 후 서버에서 이 명령을 실행하는 것입니다. 그러나 bind: Address already in use.

답변1

나는 답을 찾았다

https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts

중간 호스트를 통한 SOCKS 프록시

중간 호스트를 통해 SOCKS 프록시를 열려면 다음을 수행할 수 있습니다.

$ ssh -L 8001:localhost:8002 [email protected] -t ssh -D 8002 [email protected]

클라이언트는 실제로 machine1에 대한 연결인 localhost의 포트 8001에서 SOCKS 프록시를 보게 되며 트래픽은 궁극적으로 machine2를 통해 네트워크에 들어오고 나가게 됩니다. localhost의 포트 8001은 machine2의 SOCKS 프록시인 machine1의 포트 8002에 연결됩니다. 필요에 따라 포트 번호를 선택할 수 있지만 권한 있는 포트를 전달하려면 여전히 루트 권한이 필요합니다.

그래서 내 경우에는 다음을 사용했습니다.

ssh -L 6000:localhost:6001 -p 9000 admin@ip
ssh -D 6001 -p 6666 localhost -l username -N

관련 정보