Xshell 中有使用代理连接 ssh 的功能,最近使用 WSL2 连接 ssh 的时候也想使用代理连接 ssh,用命令行方式实现通过 http 或 socks 代理连接 ssh
环境:Ubuntu22.04
工具:netcat (Debian patchlevel 1.218-4ubuntu1)
WLS2 中的 Ubuntu22.04 分发版自带 netcat
1 | nc -h |
如果没有 netcat,通过以下命令安装
1 | sudo apt install netcat |
注:例子中代理服务器 IP 和端口:192.168.8.49:7890 远程服务器 IP:105.105.35.6 用户名:admin
为了省事,将以下代理命令设置为别名,写入 vim /etc/profile.d/proxy.sh
连接时直接输入别名即可
通过 socks5 代理登陆 ssh
1
alias sshproxy='ssh -o ProxyCommand="nc -X 5 -x 192.168.8.49:7890 %h %p" admin@105.105.35.6'
通过 http 代理登陆 ssh
1
alias sshhttp='ssh -o ProxyCommand="nc -X connect -x 192.168.8.49:7890 %h %p" admin@105.105.35.6'
nc 参数解释:
-X: 5 (socks5 代理) 4(socks4 代理) connect (http 代理) 未指定默认 socks5 代理
-x: 连接目标地址的代理服务器和端口,不指定代理服务器端口 socks 代理默认端口 1080,http 默认端口 3128
注意:alias = 前后不能有空格,命令中有空格的话,命令要用单引号引住
查看文档:man nc
参考:
博客:壳壳中的宇宙