我在使用 SSH 从 HTTP 代理后面从 Cygwin 终端连接到我家的 Raspberry Pi 时遇到问题。它曾经可以工作™,我不知道自几天前以来发生了什么变化(也许是代理过滤?)。我仍然可以从代理网络外部进行连接,无需开瓶器。
就客户端而言,我的 ssh 配置如下:
Host *
ServerAliveInterval 60
ProxyCommand /bin/corkscrew http.proxy.here 80 %h %p
连接尝试给出了这个:
blx@proxyed-pc:~$ ssh [email protected] -v
OpenSSH_7.9p1, OpenSSL 1.0.2p 14 Aug 2018
debug1: Reading configuration data /home/blx/.ssh/config
debug1: /home/blx/.ssh/config line 1: Applying options for *
debug1: Executing proxy command: exec /bin/corkscrew http.proxy.here 80 my.home.ip 22
debug1: identity file /home/blx/.ssh/id_rsa type -1
debug1: identity file /home/blx/.ssh/id_rsa-cert type -1
debug1: identity file /home/blx/.ssh/id_dsa type -1
debug1: identity file /home/blx/.ssh/id_dsa-cert type -1
debug1: identity file /home/blx/.ssh/id_ecdsa type 2
debug1: identity file /home/blx/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/blx/.ssh/id_ed25519 type -1
debug1: identity file /home/blx/.ssh/id_ed25519-cert type -1
debug1: identity file /home/blx/.ssh/id_xmss type -1
debug1: identity file /home/blx/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.9
ssh_exchange_identification: Connection closed by remote host
在服务器方面,/var/log/auth 报告如下:
Nov 26 13: 39:36 raspi sshd[19130]: debug1: Forked child 19699.
Nov 26 13: 39:36 raspi sshd[19699]: debug1: Set /proc/self/oom_score_adj to 0
Nov 26 13: 39:36 raspi sshd[19699]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
Nov 26 13: 39:36 raspi sshd[19699]: debug1: inetd sockets after dupping: 3, 3
Nov 26 13: 39:36 raspi sshd[19699]: debug1: getpeername failed: Transport endpoint is not connected
Nov 26 13: 39:36 raspi sshd[19699]: debug1: ssh_remote_port failed
$corkscrew http.proxy.here 80 my.home.ip 22
因此,TCP 连接似乎已损坏,但当我尝试直接与 corkscrew 连接时(即),我似乎没有遇到此问题:
Nov 26 13: 39:32 raspi sshd[19130]: debug1: Forked child 19698.
Nov 26 13: 39:32 raspi sshd[19698]: debug1: Set /proc/self/oom_score_adj to 0
Nov 26 13: 39:32 raspi sshd[19698]: debug1: rexec start in 5 out 5 newsock 5 pipe 7 sock 8
Nov 26 13: 39:32 raspi sshd[19698]: debug1: inetd sockets after dupping: 3, 3
Nov 26 13: 39:32 raspi sshd[19698]: Connection from http.proxy.here port 28220 on 192.168.0.11 port 22
Nov 26 13: 39:32 raspi sshd[19698]: Did not receive identification string from http.proxy.here port 28220
但当然 sshd 不知道该怎么办......
有什么建议吗?由于我认为我没有更改设置中的任何内容,因此我怀疑代理过滤策略的偷偷更新使我陷入了困境这情况,但我没有办法确定。当我回到家时,我会尝试更新我的路由器和 Pi 以使用端口 443。
答案1
我们需要同意,我们无意绕过某些安全措施,并且这种连接方式当然不会违反任何合同/协议。伪法律免责声明已完成,如果我是你,我确实会尝试切换我的服务器以侦听端口 443 上的 SSH 连接,这比任何其他服务器都更好(如果通过 Web 代理)。原因很简单:
- 虽然端口 80(正常 Web 流量)上的通信未加密且大部分是纯文本(阅读页面时),但端口 443 用于 SSL 加密通信。代理不会对通过该端口看到二进制形式的通信感到惊讶。您需要 SSH 的二进制连接,而不是像网页那样。
- 您不会使用众所周知的端口(如 22)将您的服务器暴露给公众(如果您的另一端没有 IP 白名单防火墙)。在线新服务器在未被探测到的情况下持续时间有时甚至不到 5 分钟。然后,来自某个地方的某人如果看到端口 22 打开,就会尝试通过 SSH 登录。端口 443 并没有增加多少安全性,但至少比 22 稍微不那么明显。祝你好运!