OS X:通过 Shadowsocks 进行 SSH 错误:“ssh_exchange_identification:远程主机关闭连接”

OS X:通过 Shadowsocks 进行 SSH 错误:“ssh_exchange_identification:远程主机关闭连接”

我在中国,SSH 连接速度被中国防火墙拖慢了。情况经常很糟糕,以至于无法使用 ssh。因此,我需要通过 shadowsocks 隧道传输我的 ssh 流量,以使 CGF 无法检测到它。因此,我在文件中添加了以下几行~/.ssh/config

$cat ~/.ssh/config
Host ssserver
  User ubuntu
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p

现在,运行时ssh -v ssserver我收到以下错误消息:

$ ssh -v ssserver
OpenSSH_7.6p1, LibreSSL 2.6.2
debug1: Reading configuration data /Users/Tom/.ssh/config
debug1: /Users/Tom/.ssh/config line 6: Applying options for ssserver
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug1: /etc/ssh/ssh_config line 102: Applying options for *
debug1: Executing proxy command: exec nc -X 5 -x 127.0.0.1:1080 ssserver 22
debug1: identity file /Users/Tom/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /Users/Tom/.ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.6
debug1: permanently_drop_suid: 501
ssh_exchange_identification: Connection closed by remote host

不幸的是,我不是 SSH 专家。所以,有人知道这意味着什么以及如何修复它吗?那真的对我有很大帮助。谢谢。

答案1

我找到了修复该问题的方法。然而,这实际上给我带来了一个新问题。

首先是解决方案:巧合的是,我发现用 IP 地址替换主机名是/etc/hosts可行的。因此,我将上面的ssserver条目更改为:~/.ssh/config

$cat ~/.ssh/config
Host 64.10.18.222
  User ubuntu
  IdentityFile ~/.ssh/id_rsa
  ProxyCommand nc -x 127.0.0.1:1080 %h %p

现在,我只需在控制台上调用ssh -v 64.10.18.222它就可以工作。

或者完整的控制台命令是:

ssh -v -i ~/.ssh/your_id_key_file_rsa -o ProxyCommand='nc -x 127.0.0.1:1080 %h %p' [email protected]

因此,我的新问题是:为什么 IP 地址有效,而主机名却失败/etc/hosts

相关内容