ssh-keyscan 没有输出

Jay*_*Jay 11 ssh openssh

我有自动下拉并安装github存储库的服务器脚本。作为脚本的一部分,我ssh-keyscan -H github.com >> ~/.ssh/known_hosts以 git 用户身份运行以在检出 repo 之前自动接受 github 的 RSA 密钥。

我已经在本地 vagrant 实例以及多台服务器上成功使用了相同的脚本。但是,在其中一台服务器上这是行不通的,因为ssh-keyscan -H github.com不返回任何输出(我已经以 git 用户、我的个人用户和 root 用户的身份尝试过这个,并且命令的行为相同)。我可以ping github.com,所以不是连接问题;我还可以在同一网络中的另一台服务器上成功运行 ssh-keyscan。我已经尝试升级 SSH 以查看这是否可能是问题所在,但它已经在我的发行版 (CentOS 7) 的最新版本上。

从哪里开始解决这个问题?我已经尝试在 StackExchange 中搜索与“ssh-keyscan”相关的问题,但我还没有找到适合这个特定问题的任何内容。

小智 7

我遇到了同样的问题(没有给出输出),这是因为默认超时(5 秒)太短了。我通过使用 -T 标志解决了这个问题,该标志允许我设置自己的自定义超时(以秒为单位)。具有 240 秒超时和随机 IP 地址的说明性示例:

ssh-keyscan -T 240 52.213.86.118
Run Code Online (Sandbox Code Playgroud)

  • 这个——谢谢。感觉像是一个错误,没有错误消息。 (2认同)

Ed *_*lle 6

这对我来说听起来像是网络问题。

我要做的第一件事是尝试远程登录到端口 22 上的各种 SSH 服务器,如下所示:

$ telnet local-git-server 22

其次是:

$ telnet github.com 22

运行此程序时,您应该会看到与以下类似的输出:

Escape character is '^]'. SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2

这是一个很好的指示,ssh允许在没有任何防火墙限制的情况下使用。

  • 最终的结果是ssh-keyscan什么?
  • 如果有的话,它打印了什么?
  • telnet 是否挂了几秒钟?您是否收到连接被拒绝或连接被拒绝的响应?
  • 如果您运行netstat -an --tcp,您是否看到几个处于 SYN_SENT 状态的 TCP 条目?如果是这样,这将表明网络层存在阻塞


小智 5

ssh-keyscan -p <PORT> <IP>如果您的 ssh 服务器未在默认端口上运行,请尝试运行