SSH 터널을 통한 SSH 전달 : 192.168.25.100),

내 상황 :

Me (로컬 호스트)-> 서버 A (ip : 100.100.100.100) => (서버 B (ip : 192.168.25.100), 서버 ….)

서버 b에 연결하려는 경우 실제 IP가 있기 때문에 서버에 SSH로 연결할 수 있습니다. 서버 b를 IP로 ssh합니다 (192.168.25.100)

예:

내 PC에서 :

ssh user@100.100.100.100

100.100.100.100에서

ssh user@192.168.25.100

이것은 ssh를 사용하여 서버 B로 안내합니다.

서버 b에 직접 연결하려면 어떻게해야합니까? 내가 어떻게 할 수 있습니까?

예:

내 oc에서 :

ssh@192.168.25.100

나는 다음을 시도했다 :

ssh -L 22:localhost:22 user@100.100.100.100

성공없이



답변

문제는 리스너를 localhost에 바인딩하는 것입니다. 이미 듣고있는 sshd가 있습니다. ssh 연결을 통해 ssh 연결을 터널링하는 것은 완전히 합법적이며 항상 수행하지만 전달 리스너에 사용되지 않는 포트를 선택해야합니다.

시험

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

그때

me% ssh localhost -p 2201

서버 B에 연결해야합니다 (이미 이미 바인딩되어 있지 않은 경우 : 2201, 다른 경우 다른 포트를 선택하십시오).


답변

프록시를 통해 내부 컴퓨터로 ssh를 전송하기 위해 ssh 포트 전달을 사용할 필요는 없습니다. 세 번째 컴퓨터에 ssh를 연결하기 위해 첫 번째 연결 서버에서 명령을 실행하는 ssh 기능을 사용할 수 있습니다.

ssh -t user@100.100.100.100 ssh user@192.168.25.100

-t옵션은 ssh가 pseudo-tty를 강제로 할당하므로 대화식 명령을 실행할 수 있습니다.

이것은 ssh 키와도 작동합니다. 머신 A에 개인용 및 공개 키가 있고 머신 B 및 C에있는 권한 부여 된 키 파일에 공개 키가있는 경우이 -A옵션을 사용 하여 인증 에이전트 연결을 전달할 수 있습니다 .


답변

다른 솔루션을 사용했습니다. ProxyCommand옵션을 사용했습니다 (여기에서 ~/.ssh/config).

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

이것은 포트 간 터널을 설정하지 않고 표준 stdin / out을 사용하여 ssh를 터널링합니다. 이 방법에는 실제로 세 개의 ssh 연결을 인증해야한다는 결점이 있습니다. 그러나 내부 호스트에 연결하려면 다음을 입력하십시오.

ssh myinsidehost2

… 따라서 해당 터널에 대한 IP 선택에 신경 쓸 필요가 없습니다.


답변

ssh 매뉴얼 페이지에 따르면 ProxyCommand가 올바른 방법입니다.

구문은 다음과 같습니다.

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

답변

OpenSSH 7.3 (2016 년 말)부터 가장 쉬운 방법은 ProxyJump 설정입니다. 당신의 ~/.ssh/config:

Host B
  ProxyJump A

또는 명령 행, -J B.