通过代理登录远程主机
ssh要使用代理登录远程主机,一般是因为远程主机是买的国外主机,然后ip被和谐了,所以要用通过代理来登录,代理一般都是ss啦。
用法一
ssh -o "ProxyCommand nc -X 5 -x 127.0.0.1:1086 %h %p" [email protected]
用法二
ssh -o ProxyCommand="nc -X 5 -x 127.0.0.1:1086 %h %p" [email protected]
用法三
不写-X
,则默认使用SOCKS5协议:
ssh -o ProxyCommand="nc -x 127.0.0.1:1086 %h %p" [email protected]
解释:
– -o
:option,表示选项的意思;
– ProxyCommand
:ssh的一个选项,man ssh
的-o
选项中可看到有ssh有哪些选项可使用,要进一步看选项具体含义,可用man ssh_config
查看;
– nc
:netcat,net就是网络,cat就是“concatenate”(连接),就是连接网络的意思,这是一个工具,可以用man nc
查看,windows下应该不存在这个命令,linux也需要安装,mac自带这个命令;
– -X
: (大写X)指定代理协议,有三种值:
4:SOCKS v4
5:SOCKS v5
connect:HTTPS
– -x
:(小写x)指定代理的主机地址和端口,我例子里写127.0.0.1:1086
,是因为我用的ss,它有它的本地ip和端口,当然主机地址也可以填域名;
– %h %p
:变量,用于替换ssh真正要连接的服务器的主机名(host)和端口(port);
– [email protected]
:真正要连接的主机。
注意:-X
和-x
都是nc
命令的选项(可用man nc
查看),而不是ProxyCommand
命令的选项。
用法四
把ProxyCommand
的配置写在配置文件中,这样就不需要全部选项明着写了。
编写配置文件~/.ssh/config
,注意,这个配置文件在客户端一般是不存在的,直接用vim新建保存即可。
vim ~/.ssh/config
配置文件内容:
Host *
ProxyCommand nc -X 5 -x 127.0.0.1:1086 %h %p
*`号表示所有ssh连接的主机都通过指定的代理连接,当然你也可写成指定域名,或通配符域名,例如`*.test.com
使用了配置文件后,ssh直接像平时正常使用就可以,它会自动读取配置文件并使用代理去连接:
ssh [email protected]
**注意:**如果你是新建的~/.ssh/config
文件,一定要把它的权限设置为600
,否则会无法使用scp