让你的SSH通过HTTP代理或者SOCKS5代理

Linux Jul 1, 2019

socks5代理

有时候你的SSH因为某些原因, 或者你的VPSSSH端口被某些无法阻挡的力量被封禁了, 你使用普通的SSH方式无法登录你的服务器, 所以这时候我们需要使用一些方式, 让你的SSH通过代理链接你的服务器, 进而解决这个问题.

直接配置

如何让你的ssh链接使用socks代理呢, 我们可以使用nc命令, 使用sshProxyCommand配合nc可以让ssh通过你设置的代理访问服务器

$ ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p" root@server

其中使用ProxyCommand命令, 带上具体内容nc -X 5 -x 127.0.0.1:1080 %h %p, 127.0.0.1:1080是你的代理实际地址和端口 最后边的root@server是你需要登录的服务器和用户名

nc命令的常用参数:

-X是指定代理协议

  • 4是socks4协议
  • 5是socks5协议

-x是指定代理服务器和端口[代理服务器:端口]

  • 默认socks使用1080
  • HTTPS使用3128

alias

使用alias方式也可以:

打开你的.bashrc或者.zshrc配置alias

$ vim ~/.bashrc

alias connserver=ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1080 %h %p" root@server

保存退出后输入一下:

$ source ~/.bashrc

下次我们访问服务器的时候直接输入connserver就行

$ connserver

config方式

我们也可以使用sshconfig配置

编辑ssh的配置文件, 没有这个文件的话, 自己创建一下:

$ vim ~/.ssh/config

然后写入一些命令

Host *
    ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p

下次使用ssh的时候就不需要配置代理了

HTTP代理

有时候你没有socks代理的时候, 我们借助corkscrew可以让ssh使用HTTP代理

由于我这里是macOS系统, 我就直接用brew安装corkscrew:

$ brew install corkscrew

安装完成之后我们打开sshconfig文件修改成使用corkscrewhttp代理方式:

$ vim ~/.ssh/config

写入:

ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8080 %h %p

/usr/local/bin/corkscrewcorkscrew的可执行文件路径, 如果您和我的不一样, 可以修改成正确的地址

127.0.0.1 8080是你的HTTP代理端口, 注意中间有空格, 保存退出后这个时候ssh可以通过你设置的http代理进行访问你的服务器了.

注意,这种方式生效是全局的, 可能会影响到你的git 使用ssh的方式clone或者push

全文完题图

Tags

壳壳

一个想法不一定对