내 사무실에는 방화벽 뒤에 있는 서버가 있고, 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
포함한 자세한 내용은 리소스를 참조하세요 . 그것에 대해 읽지 않고 값을 선택하지 마십시오.yes
clientspecified
이 질문에 답한 후, 귀하의 사무실 네트워크에 대한 관리되지 않은 액세스는 IT 정책 위반일 가능성이 높으며 징계 조치를 받을 수 있다는 점을 지적하고 싶습니다. 특히 "어디서나" 접근할 수 있는 경로의 경우.
답변2
완전성을 기하기 위해 제가 찾은 또 다른 솔루션을 공유합니다. 바로 SSH 점프 호스트라는 기능을 사용하는 것입니다.
위의 SSH 터널을 사용하면 이 명령으로 사무실 서버에 한 번에 연결할 수 있습니다.
ssh -J homeuser@homeserver:22 -p 22222 workuser@localhost
이 -J
플래그는 user@server:port 계정을 점프 호스트의 SSH 매개변수인 점프 호스트로 사용하도록 지시합니다.