
나는 때때로 홈 네트워크 내부 또는 외부에 있을 수 있는 노트북을 가지고 있습니다. 네트워크 내부의 컴퓨터에 SSH로 연결해야 하는 경우 연결은 매우 간단합니다.
localhost $ ssh machinelearning
다음에서 기기에 액세스하려고 할 때밖의내 네트워크의 라우터에 연결한 다음 거기에서 SSH를 연결해야 합니다.
localhost $ ssh router.mytotallyuniquedomain.com
router $ ssh machinelearning
에 후자의 명령을 수행하기 위한 단축키가 있다는 것을 기억 ~/.ssh/config
하지만 지금은 그것이 무엇인지 기억이 나지 않습니다.
이 작업을 수행할 때 여러 호스트 이름이나 연결 유형을 제공할 수 있는 방법이 있습니까?
$ ssh machinelearning
SSH는 먼저 로컬 네트워크의 호스트에 연결을 시도한 다음 긴 호스트 이름을 입력할 필요 없이 를 machinelearning
통해 터널링을 시도합니다 .router.mytotallyuniquedomain.com
답변1
방법 #1 - ProxyCommand 및 netcat
나는 $HOME/.ssh/config
이것을 촉진하기 위해 이 설정을 사용합니다.
Host intserver1-o intserver2-o intserver3-o
ProxyCommand ssh [email protected] nc `echo %h|sed 's/-o//'` %p
ssh intserver2-o
그런 다음 어디에서나 이 내부 서버에 들어갈 수 있습니다. 집에 있을 때 LAN을 사용하면 ssh intserver1
.
메모:위의 트릭을 사용하려면 nc
extserver1에 netcat()이 설치되어 있어야 합니다.
방법 #2 - 중첩된 SSH
또는 다음 방법을 사용할 수도 있습니다.
$ ssh -t -l gatewayuser gatewayserver "ssh -l serveruser internalserver"
기본적으로 이 방법에서는 SSH 호출을 중첩합니다.
방법 #3 - ProxyCommand 및 ssh -W
최신 버전의 SSH(5.4+)에서는 스위치를 통하지 ssh
않고 사용할 수 있습니다 .nc
-W
Host TARGETHOST
ProxyCommand ssh -W %h:%p PROXYHOST
%h
&는 에 %p
사용된 호스트 이름 포트에 대한 매크로입니다 TARGETHOST
.