我不知道我在这里做什么,所以请记住如果您能帮助我!
我试图通过代理连接到我的虚拟服务器,但无法连接,它只是挂起。我假设这是因为它没有通过我们的代理。
我在家中尝试过完全相同的东西,并且效果很好。我在OSX上使用终端进行连接。
谁能告诉我如何使用SSH通过代理?
我不知道我在这里做什么,所以请记住如果您能帮助我!
我试图通过代理连接到我的虚拟服务器,但无法连接,它只是挂起。我假设这是因为它没有通过我们的代理。
我在家中尝试过完全相同的东西,并且效果很好。我在OSX上使用终端进行连接。
谁能告诉我如何使用SSH通过代理?
Answers:
理查德·克里斯滕森(Richard Christensen)的一线回答,无需文件编辑(用您自己的设置大写替换,PROXYPORT通常为80),这是以下方法:
ssh USER@FINAL_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p"
您也可以-o ...
对scp使用相同的选项,请参见https://superuser.com/a/752621/39364
如果在OS X中得到此信息:
nc: invalid option -- X
Try `nc --help' for more information.
可能是您不小心使用了netcat的自制版本(您可以通过执行which -a nc
命令看到-/usr/bin/nc
应该首先列出)。如果有两个,则一种解决方法是指定所需nc的完整路径,例如ProxyCommand=/usr/bin/nc
...
对于CentOSnc
也有同样的问题invalid option --X
。connect-proxy
是一种替代方案,易于安装,易于使用yum
和使用-
ssh -o ProxyCommand="connect-proxy -S PROXYHOST:PROXYPORT %h %p" USER@FINAL_DEST
nc: invalid option -- X
仍然存在。解决此问题的方法是将gnu-netcat替换为openbsd-netcat。有关详细信息,请参见pagekite.net/wiki/Howto/SshOverPageKite/#wrongnetcat。这两个版本可能彼此冲突。
如果要经常使用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
proxyhost
由IP(不加模式!)和proxyport
通过-在这种情况下- 8080
我使用-o "ProxyCommand=nc -X 5 -x proxyhost:proxyport %h %p"
ssh选项通过OSX上的socks5代理进行连接。
ProxyCommand nc -X 5 -x proxyhost:proxyport %h %p
Windows平台上的@rogerdpack真的很难找到带有-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的ncat可以完成完美的工作
对于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解决问题,请执行以下操作:
更好的解决方案:
在Git Bash中使用connect.c作为ProxyCommand的SSH:
ssh -o "ProxyCommand=connect -a none -S 127.0.0.1:9150 %h %p"
请注意,connect.c支持袜子版本4 / 4a / 5。
要在git
使用ssh的命令中使用代理(例如,在使用GitHub时)(假设您在其中安装了Git Bash),请C:\Program Files\Git\
打开~/.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
$ 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
改为使用。
为我工作。
我.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
Ubuntunetcat
似乎非常相似,特别是在选项-X
和方面-x
。有了这个,我没有任何问题。
1080
可以socks5 port
。
我用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
这就是我解决的方法,希望以后能帮助其他人。
我的系统是debian 10,并且安装最少。
我也有同样的问题。
git clone git@github.com:nothing/nothing.git
Cloning into 'nothing'...
nc: invalid option -- 'x'
nc -h for help
ssh_exchange_identification: Connection closed by remote host
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
要么
git clone git@github.com:nothing/nothing.git
Cloning into 'nothing'...
/usr/bin/nc: invalid option -- 'X'
nc -h for help
ssh_exchange_identification: Connection closed by remote host
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
所以,我知道NC有不同的版本一样openbsd-netcat
和GNU-netcat
,你可以在Debian的对OpenBSD版本改变NC,但我选择改变之类的软件corkscrew
,因为数控系统两个版本的名称是相同的,许多人不太了解。我的方法如下。
sudo apt install corkscrew
然后。
vim ~/.ssh/config
像这样更改此文件。
Host github.com
User git
ProxyCommand corkscrew 192.168.1.22 8118 %h %p
192.168.1.22
并且8118
是我的代理服务器的地址和端口,您应该根据服务器地址进行更改。
很好
谢谢@han。