通过 Corkscrew 到远程服务器的 SSH 无法正常工作

通过 Corkscrew 到远程服务器的 SSH 无法正常工作

我正在尝试从我的大学网络(代理)通过 SSH 连接到远程服务器。但是,每当我尝试通过 SSH 连接到主机时,都会收到此错误

ssh_exchange_identification: Connection closed by remote host

这是完整的描述:-

命令 :-

ssh -vvv root@serverIP -p serverPort

输出 :-

OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/prashant/.ssh/config
debug1: /home/prashant/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Executing proxy command: exec /usr/bin/corkscrew 144.16.192.213 8080  serverIP serverPort
debug1: identity file /home/prashant/.ssh/id_rsa type -1
debug1: identity file /home/prashant/.ssh/id_rsa-cert type -1
debug1: identity file /home/prashant/.ssh/id_dsa type -1
debug1: identity file /home/prashant/.ssh/id_dsa-cert type -1
debug1: identity file /home/prashant/.ssh/id_ecdsa type -1
debug1: identity file /home/prashant/.ssh/id_ecdsa-cert type -1
debug1: permanently_drop_suid: 1000
ssh_exchange_identification: Connection closed by remote host

我的配置文件包含这个

Host *
ProxyCommand /usr/bin/corkscrew 144.16.192.213 8080  %h %p

谁能帮我解决这个问题?

谢谢 !

答案1

我不完全确定我的解释是否正确,但我认为这就是正在发生的事情。

连接被代理阻止。HTTP 连接(这是 corkscrew 用于反弹通过代理的方法)在浏览 HTTPS 站点的典型配置中是必需的。代理无法过滤连接,因为它是加密的,并且它别无选择,只能让看起来模糊的 SSL 连接通过。 (SSL和SSH实际上可以区分,但许多代理不会打扰)但是,几乎所有HTTPS站点都在默认端口(443)上,因此代理通常只会反弹到端口443的连接。我认为“连接被远程主机关闭” ”是由于代理在发现您尝试弹回到不同的端口时会断开连接。

如果可以,请更改 SSH 服务器的配置,使其侦听端口 443。“Proxy Could not open Connection to serverIP: Service Unavailable”表示代理愿意让您连接,但没有服务器侦听该端口港口。 (一旦 SSH 协议开始发生,就不能保证它不会进行某种形式的流量分析并阻止您。)

您需要成为目标计算机上的 root 才能使服务器侦听端口 443。如果您没有运行 HTTPS 服务器,则可以轻松地Port 443sshd_config文件中添加该行并重新启动sshd进程(service ssh restart/etc/init.d/ssh restart某些此类命令)。

您可以在同一端口上运行 SSH 服务器和 HTTPS 服务器,因为客户端发送的第一个数据包足以判断请求的是哪个服务器。您可以使用sslh多路复用器(另请参见本指南)。

相关内容