내 상황 :
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
.