Ssh

SSH socks 代理伺服器預設開啟

  • March 25, 2022

我需要一些關於基於 SSH 的 SOCKS 代理伺服器的幫助。

我正在使用以下命令執行 SSH SOCKS 代理:

ssh -N -D 0.0.0.0:1080 localhost

我可以預設啟用它嗎?無論如何,預設情況下 ssh 守護程序是打開的,因此必須有一種方法來配置它。

另外,我使用 0.0.0.0 來允許所有傳入的 IP 地址。我可以將其限制在子網中嗎?例如 192.168.1.0/24。或者至少是一個介面名稱。

設置基於密鑰的身份驗證

作為先決條件,您需要設置 SSH 連接以使用基於密鑰的身份驗證,以便連接無需密碼即可工作。

將您的公鑰複製到遠端電腦:

ssh-copy-id remoteuser@remotehost

測試基於密鑰的身份驗證:

ssh remoteuser@remotehost

如果 SSH 連接成功且不要求您輸入密碼,則可以繼續。


創建系統服務

/etc/systemd/system/在呼叫中創建一個文件,yourtunnel.service內容如下:

[Unit]
Description=SSH socks proxy
After=network-online.target
[Service]
User=your_user
ExecStart=/usr/bin/ssh -N -D 0.0.0.0:1080 localhost
ExecStop=kill $(pgrep -f 'ssh -N -D')
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

執行sudo systemctl daemon-reload && sudo systemctl enable --now yourtunnel.service並檢查服務是否成功啟動sudo systemctl status yourtunnel.service


限制訪問以僅允許特定的 IP 地址

您需要設置防火牆規則,因為命令中的 IP 地址僅指定 SSH 綁定到的本地電腦上的介面地址。

UFW 範例:

sudo ufw allow proto tcp from  192.168.1.0/24 to any port 1080

引用自:https://unix.stackexchange.com/questions/696823