我不知道我在这里做什么,所以如果你能帮助我,请记住这一点!
我试图通过代理连接到我的虚拟服务器,但我无法连接,它只是挂起。我假设这是因为它没有通过我们的代理。
我在家尝试过完全相同的东西,它完美无缺。我正在运行使用终端进行连接的OSX。
任何人都可以告诉我如何通过SSH获取代理?
以下是理查德·克里斯滕森(Richard Christensen)作为单行代码的答案,无需编辑文件(用您自己的设置替换大写,PROXYPORT通常为80):
ssh USER@FINAL_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p"
您也可以为scp使用相同的-o ...
选项,请参阅https://superuser.com/a/752621/39364
如果你在OS X中得到这个:
nc: invalid option -- X
Try `nc --help' for more information.
可能是你不小心使用netb的自制版本(你可以通过执行which -a nc
命令看到 - /usr/bin/nc
应该首先列出)。如果有两个,那么一个解决方法是指定所需的nc的完整路径,如ProxyCommand=/usr/bin/nc
...
对于CentOS,nc
有同样的invalid option --X
问题。 connect-proxy
是另一种选择,使用yum
易于安装并且有效 -
ssh -o ProxyCommand="connect-proxy -S PROXYHOST:PROXYPORT %h %p" USER@FINAL_DEST
对于Windows,@ shoaly参数对我来说并不完全有效。我收到了这个错误:
NCAT DEBUG: Proxy returned status code 501.
Ncat: Proxy returned status code 501.
ssh_exchange_identification: Connection closed by remote host
我想ssh到REMOTESERVER并且SSH端口已在我的网络中关闭。我找到了两个解决方案但第二个更好。
ncat.exe
提取到当前目录中。
在Git Bash中使用Ncat作为ProxyCommand并使用--proxy-type socks4
参数添加SSH:
ssh -o "ProxyCommand=./ncat --proxy-type socks4 --proxy 127.0.0.1:9150 %h %p" USERNAME@REMOTESERVER
请注意,此Ncat实现不支持socks5。ssh -o "ProxyCommand=connect -a none -S 127.0.0.1:9150 %h %p"
请注意,connect.c支持socks版本4 / 4a / 5。要使用ssh在git
命令中使用代理(例如在使用GitHub时) - 假设您在C:\Program Files\Git\
中安装了Git Bash - 打开~/.ssh/config
并添加以下条目:
host github.com
user git
hostname github.com
port 22
proxycommand "/c/Program Files/Git/mingw64/bin/connect.exe" -a none -S 127.0.0.1:9150 %h %p
如果要经常使用SSH代理连接,则不必每次都将它们作为参数传递。您可以将以下行添加到~/.ssh/config
Host foobar.example.com
ProxyCommand nc -X connect -x proxyhost:proxyport %h %p
ServerAliveInterval 10
然后连接使用
ssh foobar.example.com
资源:
http://www.perkin.org.uk/posts/ssh-via-http-proxy-in-osx.html
我使用-o "ProxyCommand=nc -X 5 -x proxyhost:proxyport %h %p"
ssh选项通过OSX上的socks5代理连接。
@rogerdpack for windows平台真的很难找到带-X(http_proxy)的nc.exe,但是,我发现nc可以被ncat取代,完整示例如下:
Host github.com
HostName github.com
#ProxyCommand nc -X connect -x 127.0.0.1:1080 %h %p
ProxyCommand ncat --proxy 127.0.0.1:1080 %h %p
User git
Port 22
IdentityFile D:\Users\Administrator\.ssh\github_key
和--proxy与--proxy可以做一个完美的工作
$ which nc
/bin/nc
$ rpm -qf /bin/nc
nmap-ncat-7.40-7.fc26.x86_64
$ ssh -o "ProxyCommand nc --proxy <addr[:port]> %h %p" USER@HOST
$ ssh -o "ProxyCommand nc --proxy <addr[:port]> --proxy-type <type> --proxy-auth <auth> %h %p" USER@HOST
ProxyCommand nc -proxy xxx.com:8080 %h %p
删除-X connect
并使用-proxy
代替。
为我工作。
我用proxychains ssh user@host
;来自proxychains-ng(参见https://github.com/rofl0r/proxychains-ng)。
默认情况下,它在127.0.0.1:9050使用socks4代理,但可以在conf文件/etc/proxychains.conf
中更改,或者您可以指定另一个conf文件proxychains -f custom.conf
在我的情况下,因为我在路上有一个跳转主机或Bastion主机,并且因为这些堡垒节点上的签名已经更改,因为它们被导入到known_hosts文件中,我只需要从以下文件中删除这些条目/行:
/Users/a.abdi-kelishami/.ssh/known_hosts
从上面的文件中删除引用堡垒主机的那些行。
我在我的.ssh/config
中使用以下行(可以用合适的命令行参数替换)在Ubuntu下
Host remhost
HostName my.host.com
User myuser
ProxyCommand nc -v -X 5 -x proxy-ip:1080 %h %p 2> ssh-err.log
ServerAliveInterval 30
ForwardX11 yes
当与Msys2一起使用时,在安装gnu-netcat
后,文件ssh-err.log
显示选项-X
不存在。 nc --help
证实了这一点,并且似乎表明没有其他选择来处理代理。
所以我安装了openbsd-netcat
(pacman
在询问后删除了gnu-netcat
,因为它与openbsd-netcat
冲突)。在第一个视图,并检查相应的手册页,openbsd-netcat
和Ubuntu netcat
似乎非常相似,特别是关于选项-X
和-x
。有了这个,我连接没有问题。