youatwork@officepc$ autossh -R 12345:localhost:22 notroot@serverpc
후에:
you@homepc$ autossh -L 23456:localhost:12345 notroot@serverpc
you@homepc$ ssh youatwork@localhost -p 23456
수행 할 수있는 작업은 다음과 같습니다. 1 단계에서 원격 PC를 사무실 PC에서 서버로 전달합니다 ( 12345
예 : 1024보다 큰 포트가 사용됨). 이제 서버에서 12345에 연결하면 officepc의 포트 22에 연결됩니다.
2 단계에서 포트 23456을 가정용 컴퓨터에서 서버의 12345로 전달하십시오 (1 단계에서 설정 한대로 officepc : 22로 전달됨)
3 단계에서 사무실 PC 로그인으로 로컬 포트 23456에 연결합니다 . 2 단계에서 서버의 포트 12345로 전달되고 1 단계에서 사무실 PC로 전달됩니다.
전달을 위해 autossh를 사용하고 있습니다. 터널이 끊어지면 터널을 자동으로 다시 연결하는 ssh 래퍼입니다. 그러나 연결이 끊어지지 않는 한 정상적인 ssh도 작동합니다.
serverpc에서 localhost : 12345에 연결할 수있는 사람은 이제 officepc : 22에 연결하여 해킹을 시도 할 수 있습니다. (주 당신이 SSH 서버를 실행하는 경우, 당신은 어쨌든 기본적으로에있는 기본적인 보호 위를 확보해야 - 예를 들어 볼 나는 루트 로그인을 비활성화하고 암호 인증을 사용하지 않도록 적어도 추천 이 )
편집 : 동일한 구성으로 이것을 확인했으며 작동합니다. GatewayPorts no
로컬 터널이 아닌 전 세계에 열려있는 포트에만 영향을줍니다. 전달 된 포트는 다음과 같습니다.
homepc:
outgoing ssh to serverpc:22
listening localhost:23456 forwarded through ssh tunnel
serverpc:
listening ssh at *:22
incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
outgoing ssh to serverpc:22
incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22
그래서, 지금까지의 네트워크 스택에 관한 한, 그것은 각각의 루프백 인터페이스 (플러스 SSH 연결에 대한 모든 로컬 트래픽의 에 serverpc는) 따라서 GatewayPorts
전혀 확인되지 않습니다.
그러나 지시어가 있습니다 AllowTcpForwarding
. 즉 no
,이 설정은 루프백 인터페이스를 통하지 않고 전달이 전혀 허용되지 않으므로 실패합니다.
주의 사항 :
autossh 최근 SSH를 사용하는 경우, 당신은 SSH의 사용할 수 있습니다 ServerAliveInterval
및 ServerAliveCountMax
터널을 유지하기위한합니다. Autossh에는 내장 검사 기능이 있지만 Fedora에 문제가있는 것 같습니다. -M0
그것을 비활성화 -oServerAliveInterval=20 -oServerAliveCountMax=3
하고 연결이 작동하는지 확인합니다-20 초마다 시도하고 3 번 연속 실패하면 ssh를 중지합니다 (autossh는 새로운 것을 만듭니다).
autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
포워드가 실패하면-ssh 터널을 다시 시작하는 것이 유용 할 수 있습니다 -oExitOnForwardFailure=yes
.
~/.ssh/config
옵션 및 포트에 사용 하는 것이 좋습니다. 그렇지 않으면 명령 줄이 너무 자세합니다. 예를 들면 다음과 같습니다.
Host fwdserverpc
Hostname serverpc
User notroot
ServerAliveInterval 20
ServerAliveCountMax 3
ExitOnForwardFailure yes
LocalForward 23456 localhost:12345
그런 다음 서버 별명 만 사용할 수 있습니다.
autossh -M0 fwdserverpc