通过代理连接 SSH

admin
2022-05-01 / 0 评论 / 15 阅读 / 正在检测是否收录...

有时虽然 VPS 没被墙,但通过 SSH 连接进行操作时却十分卡顿,或者 VPS 不幸被墙,只能通过代理来访问。虽然 Putty 等 SSH 客户端可以很方便地配置代理,但如果你像俺一样使用操作系统的终端来通过 OpenSSH 连接,那么需要一番设置才能顺利使 SSH 经过代理。下面分别记录一下 Windows 和 Linux 下的配置过程。

§Windows 系统
使用 connect ,Windows 默认没有自带这个程序,需要去 https://bitbucket.org/gotoh/connect/downloads/ 这里下载 exe 文件并放至本机目录(比如俺这里放在了 C:\Windows\ 这个目录)。

然后编辑 C:\Users\Administrator.ssh\config 这个文件,其中 Administrator 部分改为你电脑当前的用户名,如果这个文件不存在,那就新建一个,在其中写入:

Host *

ProxyCommand C:\Windows\connect.exe -S 127.0.0.1:1080 %h %p

参数说明:

第一行 Host * 代表下面配置的代理的作用范围是所有 SSH 连接,如果只需要对个别连接配置代理,那么把型号换成对应连接的别名或者 IP 地址;
下面的 C:\Windows\connect.exe 是 connect 程序的绝对路径;
-S 是指定使用 socks 5 协议,也可以使用 -H 来使用 HTTP 协议来代理,不过后面的 127.0.0.1:1080 也要改为你的 HTTP 代理的地址和端口;
%h 和 %p 用于替换真正要连接的服务器主机名(host)和端口(port)。
如果只是临时需要走一下代理,那么可以不修改配置文件,而是在原本的 SSH 命令后面加上参数 -o "ProxyCommand path-to-connect.exe -S 127.0.0.1:1080 %h %p ,例如上面的例子,可以在连接的时候使用类似下面的命令,是一样的效果:

ssh user@server -o "ProxyCommand C:\Windows\system32\connect.exe -S 127.0.0.1:1080 %h %p"
0

评论 (0)

取消