일부 기사에 액세스할 수 있도록 집에서 대학 컴퓨터를 통해 SSH 터널을 사용하려고 합니다.
두 머신 모두 Ubuntu 11.04를 실행하고 있습니다. 대학의 기계가 움직이고 있었다 openssh-server
.
집에서는 다음 지침을 따릅니다.
SSH 세션을 엽니다.
ssh -D 9999 -C user@my_addr.com
9999
그런 다음 포트에서 SOCKS5 연결을 사용하도록 Firefox를 구성했습니다localhost
.
이것은 잠시 동안 작동합니다. 그러다가 갑자기 연결이 끊기고 단말기가 멈춥니다.
내가 여기서 무엇을 놓치고 있는 걸까요?
답변1
설정을 시도해 볼 수 있습니다클라이언트 활동 간격그리고살아있는 최대 클라이언트 수sshd 구성 파일의 변수를 자신에게 맞는 값으로 변경하세요.
매뉴얼에서:
ClientAliveInterval
Sets a timeout interval in seconds after which if no data has been received
from the client, secshd will send a message through the encrypted channel
to request a response from the client.
The default is 0, indicating that these messages will not be sent to the
client. This option applies to protocol version 2 only.
답변2
노력하다 autossh
. 중단된 연결을 감지하고 자동으로 다시 연결합니다. 나는 과거에 비슷한 상황에서 이것을 사용해 본 적이 있으며 나에게 잘 작동했습니다.
편집하다
나는 그것을 에서 실행했는데
screen
, 여기에는 두 가지 이점이 있습니다. 즉, 백그라운드에서 실행되고(일종의) 나중에 세션으로 돌아가서 상태를 확인하고 필요한 경우 디버그할 수 있습니다. 다음과 같습니다.screen -d -m -S my-autossh-tunnel autossh your_autossh_args
그러면 배경 화면이 실행됩니다. 프로세스를 확인하려면 다음 명령을 사용하여 이 세션에 다시 연결할
autossh
수 있습니다.screen
screen -R my-autossh-tunnel
편의상 빈 비밀번호를 사용했지만 보안을 강화하기 위해 원격 측의authorized_keys에서 다음 옵션을 사용했습니다.
command="/bin/false",no-agent-forwarding,no-X11-forwarding,no-pty`
이렇게 하면 키를 사용하여 터널을 설정할 수 있으며 쉘을 다른 목적으로 오용할 수 없습니다.
답변3
또한 while 스크립트와 함께 autossh를 사용하는 것이 좋습니다. 예를 들면 다음과 같습니다.
나는 crontab에 이것을 가지고 있습니다 :
@reboot while true; do sleep 10; autossh -i /some/location_not_default.pem -D 9999 -L 1028:localhost:3128; done
반면에는 항상 연결을 시도하고, 연결을 설정하고, 양말 포트를 만들고, 오징어 포트를 전달하려고 시도합니다. 이것은 나에게 매우 안정적인 것으로 입증되었습니다.
답변4
SSH 터널을 통해 VNC를 사용할 때도 동일한 문제가 발생했습니다. putty(windows), openssh(linux)의 경우 멈춤 현상이 자주 발생합니다.
Putty를 사용하여 연결 프로필을 복사하고 몇 가지 옵션을 변경하여 무슨 일이 일어나고 있는지 확인하고 더 이상 정지되지 않도록 했습니다! Putty의 변경 사항은 다음과 같습니다.
연결: "Nagle 알고리즘 비활성화" 선택을 취소합니다. ("TCP 킵얼라이브 활성화"를 선택하고 "킵얼라이브 사이의 초"를 30으로 설정했습니다.) "인터넷 프로토콜 버전" IPv4를 선택합니다("자동" 대신).
연결 - SSH: "압축 활성화"를 선택하세요.
어떤 옵션으로 이 문제가 해결될지는 모르겠지만 지금은 행복한 캠핑을 즐기고 있습니다. 동결시킬 수는 없었지만 확인을 위해 이전 프로필로 다시 전환했을 때 몇 초 안에 동결되었습니다.
정지는 주로 롤링 창과 같이 VNC를 통해 대규모 업데이트를 보낼 때 발생합니다. 비활성화된 Nagle 알고리즘으로 인해 서버가 너무 많은 작은 패킷으로 가득 찼을 수도 있고, 원격 VNC 서버에서는 ipv6이 비활성화되었지만 다른 호스트에서는 비활성화되었기 때문일 수도 있습니다. 이를 파악하려면 다양한 옵션에 대한 추가 테스트가 필요합니다.