首页 文章

ssh适用于一台机器,但不适用于另一台机器

提问于
浏览
1

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

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私钥-----) . 私钥是在没有密码的情况下生成的 . .ssh目录的权限在两台机器上都是相同的(700) . 两台计算机上的私钥文件的权限相同(600) . 这是我的.ssh / config的内容:

Host github.com
    StrictHostKeyChecking no
    IdentityFile ~/keyfile

我完全混淆了为什么输出显示“缺少开始标记”,为什么它试图读取密码,当然为什么它根本就失败了 . 有什么我应该尝试帮助诊断这个问题?

1 回答

  • 1

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

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

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

相关问题