SSH : SSH 서버에 쉘이없는 터널


63

두 호스트 사이에 터널을 설정해야합니다.

이를 위해 다음과 같이 사용합니다 ssh.

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

그 후 SSH_SERVER에 로그인합니다.

이 기능을 어떻게 피할 수 있습니까?! 터널 만 설정하면됩니다. SSH_SERVER에 로그인 할 필요가 없습니다 ...

나는 -N 옵션을 시도했지만 내 쉘을 바쁘게 유지했다.


SSH -N -L xx : xx : xx user @ server & <-전에 시도해 보셨습니까?
로렌스

이봐, 네 말이 맞아 다른 호스트에서 시도했지만 -N 옵션이 작동합니다. 그래서 문제가 내 ssh 클라이언트에 있음을 발견했습니다 (이유를 모르겠으며 이유를 검색 할 것입니다). 고마워요!
Bau Miao

1
man ssh: 방법을 보여줍니다 ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 -f 옵션의 배경 SSH 및 원격 명령``잠 10 '은'터널링 할 수있는 서비스를 시작합니다 (예를 들어 10 초) 시간의 양을 수 있도록 지정됩니다. 지정된 시간 내에 연결이 없으면 ssh가 종료됩니다. ```
lionello

답변:


71

다른 게시물에서 언급했듯이 원격 호스트에서 프롬프트를 표시하지 않으려면 -NSSH 옵션을 사용해야합니다 . 그러나 이것은 프롬프트없이 SSH를 계속 실행하고 셸을 사용합니다.

SSH를 백그라운드 작업으로 &표시하면됩니다.

ssh -N -L 8080:ww.xx.yy.zz:80 user@server &

백그라운드에서 ssh 터널링이 시작됩니다. 그러나 특히 수신 대기 포트가 아닌 포트에 연결하려고 할 때 (서버 아파치가 시작되지 않은 경우) 일부 메시지가 나타날 수 있습니다. 다른 작업을 수행하는 동안 쉘에서 이러한 메시지가 생성되지 않도록 STDOUT / STDERR을 큰 공백으로 리디렉션 할 수 있습니다.

ssh -N -L 8080:ww.xx.yy.zz:80 user@server >/dev/null 2>&1 & 

SSH로 재미있게 보내십시오.


17
io 리디렉션 -f대신 ssh 옵션을 사용할 수도 있습니다 &.
tkrennwa

49

-f -N 당신이 찾고있는 것입니다 :

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

3
터널이 설정되면이 방법으로 터널을 어떻게 닫습니까?
magnetik

@magnetik와 과정 찾기 pskill그것
neu242

13
@magnetik과 @ neu242는 "마스터 소켓"을 사용하는 것이 좋습니다. ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...그래서 나중에 연결을 죽일 수 있습니다 ssh -S /tmp/file -o exit user@..... 그렇게하면 ps 필요가 없습니다. ~ / .ssh / config에서 해당 파일을 자동으로 생성하도록 지시 할 수 있습니다.
Metal3d

1
"마스터 소켓"이 아닌 "제어 소켓"을 의미합니다
Metal3d

8
en.wikibooks.org/wiki/OpenSSH/Cookbook/…이ssh -S /tmp/file-sock -O exit 아니 어야합니다 .-o
fetsh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.