如何通过 Shadowsocks 路由 SSH 流量?
我正在使用 Shadowsocks 从防火墙后面连接到服务器。我想建立传出 SSH 连接,但我担心 SSH 流量可能会被识别,从而导致我的连接被关闭。因此,我希望能够通过我已经工作的 SOCKS5 代理路由 SSH 流量。
我从哪里开始实现这个目标?我假设我需要创建一个虚拟网络适配器,它可以提供一系列端口,输出以某种方式通过 SOCKS5 代理路由?
答案1
如果你的shadowsocks配置是:
- 本地地址:127.0.0.1
- 本地端口:1080
- 服务器IP 42.42.42.42
更改为您自己的配置
sudo apt install connect-proxy
编辑你的~/.ssh/config
# Outside of the firewall, with HTTPS proxy
Host 42.42.42.42
ProxyCommand connect -H 127.0.0.1:1080 %h 22
## Inside the firewall (do not use proxy)
Host *
ProxyCommand connect %h %p
现在你可以尝试:
ssh username@ipserver
检查ip连接
netstat -tn 2>/dev/null
通常你会看到类似的东西
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat
tcp 0 68 69.69.69.69:22 42.42.42.42:42800 ESTABLISHED
更多技能
将此脚本添加到您的~/.bash_profile.
袜子5
export http_proxy=socks5://127.0.0.1:1080
export https_proxy=socks5://127.0.0.1:1080
或者
HTTP(S)
export http_proxy=http://127.0.0.1:1080
export https_proxy=https://127.0.0.1:1080
如果您想为您的网络浏览器设置网络连接
鬼道(侏儒)
- 环境
- 网络
- 代理服务器
- 输入您的配置
- 不要忘记禁用本地主机的代理
或者只是将所有代理重定向添加到您的环境中
环境| grep -i 代理
必须返回
HTTP_PROXY=http://127.0.0.1:1080/
FTP_PROXY=http://127.0.0.1:1080/
ALL_PROXY=socks://127.0.0.1:1080/
NO_PROXY=127.0.0.1,localhost
HTTPS_PROXY=http://127.0.0.1:1080/
https_proxy=http://127.0.0.1:1080/
http_proxy=http://127.0.0.1:1080/
no_proxy=127.0.0.1,localhost
all_proxy=socks://127.0.0.1:1080/
ftp_proxy=http://127.0.0.1:1080/
如果你只想通过shadowsocks配置curl
export socks5=socks5://127.0.0.1:1080
和
curl api.ipify.org
对于 Git
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
答案2
有一种更简单的方法,在 ssh 配置文件中使用 match 指令:
Match Exec "nc -z 127.0.0.1 1086"
ProxyCommand nc -X 5 -x 127.0.0.1:1086 %h %p
该指令将在您每次 ssh 时执行(匹配所有内容)。首先,它尝试使用以下方式连接到 Shadowsocks 代理nc
:-z 选项仅意味着检查没有 IO 的端口。我的 ssocks 代理在端口 1086 上运行。如果它正在运行,则设置一个 ProxyCommand,如果没有运行,则不运行,并正常连接,无需代理。
答案3
tsocks
我在 Ubuntu 18.04 上工作:
sudo apt install tsocks
将其配置为/etc/tsocks.conf
:
# Local networks accessible without socks server
local = 192.168.0.0/255.255.0.0
# Socks server address
server = 127.0.0.1
# Server type SOCKS5
server_type = 5
# Server port
server_port = 1080
然后你可以通过:
tsocks ssh USER@SERVER
还必须在 SERVER 中配置 SSH 超时/etc/ssh/sshd_config
:
# 10 minutes
ClientAliveInterval 10m
# Max number of client alive messages without response
ClientAliveCountMax 3
这将在 30 分钟后自动断开客户端连接。 (man sshd_config
这两个参数的含义请参见 参考资料。)