SUNT的随手记

闲的时候,做一些对自己有益的事

0%

通过 http 或 socks 代理连接 ssh

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

参考:
博客:壳壳中的宇宙