격리 된 네트워크에 도달하려면 ssh -D
socks 프록시를 사용합니다 .
내가 추가 할 때마다 세부 정보를 입력하지 않아도되도록 다음을 추가하십시오 ~/.ssh/config
.
$ awk '/Host socks-proxy/' RS= ~/.ssh/config
Host socks-proxy
Hostname pcit
BatchMode yes
RequestTTY no
Compression yes
DynamicForward localhost:9118
그런 다음 systemd-user service unit definition 파일을 작성했습니다.
$ cat ~/.config/systemd/user/SocksProxy.service
[Unit]
Description=SocksProxy Over Bridge Host
[Service]
ExecStart=/usr/bin/ssh -Nk socks-proxy
[Install]
WantedBy=default.target
데몬이 새로운 서비스 정의를 다시로드하고, 새로운 서비스를 활성화하고, 시작하고, 상태를 확인하고, 듣고 있는지 확인했습니다.
$ systemctl --user daemon-reload
$ systemctl --user list-unit-files | grep SocksP
SocksProxy.service disabled
$ systemctl --user enable SocksProxy.service
Created symlink from ~/.config/systemd/user/default.target.wants/SocksProxy.service to ~/.config/systemd/user/SocksProxy.service.
$ systemctl --user start SocksProxy.service
$ systemctl --user status SocksProxy.service
● SocksProxy.service - SocksProxy Over Bridge Host
Loaded: loaded (/home/alex/.config/systemd/user/SocksProxy.service; enabled)
Active: active (running) since Thu 2017-08-03 10:45:29 CEST; 2s ago
Main PID: 26490 (ssh)
CGroup: /user.slice/user-1000.slice/user@1000.service/SocksProxy.service
└─26490 /usr/bin/ssh -Nk socks-proxy
$ netstat -tnlp | grep 118
tcp 0 0 127.0.0.1:9118 0.0.0.0:* LISTEN
tcp6 0 0 ::1:9118 :::* LISTEN
의도 한대로 작동합니다. 그럼 수동으로 서비스를 시작하는 데, 또는 영구적으로 그것을 실행하지 않도록하고 싶었다 autossh 사용하여, systemd 소켓 활성화를 주문형 산란 (재) 대한. 그것은 효과가 없었습니다. (내 버전) ssh
소켓 파일 디스크립터를 수신 할 수 없다고 생각 합니다.
나는 문서 (발견 1 , 2 ), 및 예를 들어 사용 systemd-socket-proxyd
이 "래퍼"서비스 "서비스"와 "소켓"을 만들 -tool를 :
$ cat ~/.config/systemd/user/SocksProxyHelper.socket
[Unit]
Description=On Demand Socks proxy into Work
[Socket]
ListenStream=8118
#BindToDevice=lo
#Accept=yes
[Install]
WantedBy=sockets.target
$ cat ~/.config/systemd/user/SocksProxyHelper.service
[Unit]
Description=On demand Work Socks tunnel
After=network.target SocksProxyHelper.socket
Requires=SocksProxyHelper.socket SocksProxy.service
After=SocksProxy.service
[Service]
#Type=simple
#Accept=false
ExecStart=/lib/systemd/systemd-socket-proxyd 127.0.0.1:9118
TimeoutStopSec=5
[Install]
WantedBy=multi-user.target
$ systemctl --user daemon-reload
이것은 죽거나 죽을 때까지 작동하는 것 같습니다ssh
. 그런 다음 다음 연결 시도시 다시 생성되지 않습니다.
질문 :
- / usr / bin / ssh가 실제로 시스템 전달 소켓을 허용하지 않습니까? 아니면 최신 버전입니까? 광산은 up2date 데비안 8.9에서 나온 것 입니다.
- 루트 단위 만
BindTodevice
옵션을 사용할 수 있습니까? - 이전 터널이 종료 된 후 첫 번째 새 연결에서 프록시 서비스가 올바르게 생성되지 않는 이유는 무엇입니까?
- 이것이 "주문형 ssh 양말 프록시"를 설정하는 올바른 방법입니까? 그렇지 않다면 어떻게합니까?
autossh
.
autossh
연결에 실패한 경우 (시스템 방식은 아니지만) 다시 연결을 관리해야합니다.