SSH 역방향 터널이 비로컬 연결을 허용할 수 있습니까?

SSH 역방향 터널이 비로컬 연결을 허용할 수 있습니까?

내 사무실에는 방화벽 뒤에 있는 서버가 있고, NAT 뒤에는 홈 서버가 있고, 가지고 다니는 노트북이 있습니다. 가끔 집에서 사무실 서버에 접속하고 싶어서 아래와 같이 설정해 봤습니다.

홈 라우터는 포트 2223을 홈 서버 포트 22로 리디렉션합니다.

내 사무실에서 autossh 및 systemd 장치를 사용하여 역방향 터널을 실행하고 있습니다.

[Unit]
Description=Call home using port 2223 and reverse tunnel 22222 into 22
After=network.target

[Service]
User=atilla
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -p 2223 -N -R 22222:localhost:22 atilla@my_home_ip

[Install]
WantedBy=multi-user.target

내 홈 서버에서 ssh -p 22222 localhost사무실 서버에 연결할 수 있습니다. 그러나 집에서 실행하면 ssh -p 22222 homeserver.local연결이 거부됩니다. 항상 홈 서버에 로그인하고 또 다른 홉을 수행해야 합니다.

사무실 서버는 최신 Raspbian을 사용하고 홈 서버는 Ubuntu 22.04를 사용하며 모두 기본 설정으로 되어 있습니다.

답변1

그것에 대해 읽은 후 autossh나는 몇 가지 징후 외에도 "다른 모든 매개변수는 SSH로 전달됩니다.". 이 플래그에 대한 사양은 ssh -R맨페이지에 나와 있습니다 man ssh.

-R [bind_address:]port:host:hostport

구성에서 선택적 bind_address:부분을 (상당히 합리적으로) 생략했으므로 바인딩은 로컬 시스템에만 적용됩니다. 콜론과 정의되지 않음을 포함하면 bind_address와일드카드가 되어 *어디에서나(방화벽, 라우팅 및 기타 네트워크 관리 계층에 따라) 포트에 액세스할 수 있습니다.

ExecStart=/usr/bin/autossh -p 2223 -N -R *:22222:localhost:22 atilla@my_home_ip

서비스 GatewayPorts설정을 읽고 변경할 수도 있습니다 sshd. 기본적으로 이 값은 no방금 설명한 작업을 수행하는 것을 방지합니다. 대안 및 를 man sshd_config포함한 자세한 내용은 리소스를 참조하세요 . 그것에 대해 읽지 않고 값을 선택하지 마십시오.yesclientspecified


이 질문에 답한 후, 귀하의 사무실 네트워크에 대한 관리되지 않은 액세스는 IT 정책 위반일 가능성이 높으며 징계 조치를 받을 수 있다는 점을 지적하고 싶습니다. 특히 "어디서나" 접근할 수 있는 경로의 경우.

답변2

완전성을 기하기 위해 제가 찾은 또 다른 솔루션을 공유합니다. 바로 SSH 점프 호스트라는 기능을 사용하는 것입니다.

위의 SSH 터널을 사용하면 이 명령으로 사무실 서버에 한 번에 연결할 수 있습니다.

ssh -J homeuser@homeserver:22 -p 22222 workuser@localhost

-J플래그는 user@server:port 계정을 점프 호스트의 SSH 매개변수인 점프 호스트로 사용하도록 지시합니다.

관련 정보