【问题标题】:ssh works on one machine, but not anotherssh 在一台机器上工作,但在另一台机器上不行
【发布时间】:2015-07-15 20:08:41
【问题描述】:

我在两台不同的机器上运行一个简单的命令:

ssh -vvvT git@github.com

在一台机器上,这是可行的。在另一台机器上,ssh 失败并显示以下消息:

debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp bd:5a:d9:2b:d0:36:1c:f1:dc:f8:83:05:17:b9:04:e0
debug3: sign_and_send_pubkey: RSA bd:5a:d9:2b:d0:36:1c:f1:dc:f8:83:05:17:b9:04:e0
debug1: key_parse_private2: missing begin marker
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: No such device or address
debug2: no passphrase given, try next key
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).

我在两台机器上使用相同的私钥。私钥具有开始标记(即 -----BEGIN RSA PRIVATE KEY-----)。私钥是在没有密码的情况下生成的。 .ssh 目录的权限在两台机器上是相同的 (700)。私钥文件的权限在两台机器上是相同的 (600)。这是我的 .ssh/config 的内容:

Host github.com
    StrictHostKeyChecking no
    IdentityFile ~/keyfile

我完全不明白为什么输出显示“缺少开始标记”,为什么它试图读取密码,当然为什么它完全失败了。有什么我应该尝试帮助诊断此问题的吗?

【问题讨论】:

  • 您确定两个键相同吗?您可以通过md5sum ~/keyfile 查询。空格真的很重要
  • 是的,md5 匹配。
  • 您能否再次检查非工作主机的 ssh 配置中的 IdentityFile 条目?也许它没有读取您认为的文件。
  • @Kenster Doh!它指向一个旧文件。谢谢!

标签: ssh


【解决方案1】:

密钥文件上没有标记表明它有密码。当 ssh 从文件中读取密钥时,它首先会尝试在没有密码的情况下解释文件内容。如果它无法理解文件的内容,它会要求输入密码并再次尝试读取文件。您可以向 ssh 提供一个完整的无意义文件,它会在放弃之前要求输入密码:

$ head -1500c < /dev/urandom > boguskey
$ chmod 600 boguskey
$ ssh -i boguskey localhost
Enter passphrase for key 'boguskey':

换句话说,如果 ssh 提示您输入密码,并且您确信该文件不应该有密码,那么该文件肯定有其他问题。例如,它可能会被截断或损坏。

【讨论】:

  • 密钥文件完全相同。 md5s匹配,我可以将文件从非工作机器复制到工作机器上,它仍然可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 2016-09-28
  • 1970-01-01
  • 2014-06-03
  • 1970-01-01
相关资源
最近更新 更多