公钥总是要求输入密码和密钥短语

公钥总是要求输入密码和密钥短语

我正在尝试使用公钥从 NAS 通过 SSH 连接到 Web 服务器。NAS 用户是“root”,Web 服务器用户是“backup”

我已正确设置所有权限,当我调试 SSH 连接时,我得到:(调试的最后一点)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

我正在使用以下命令:

ssh -v -i /root/.ssh/id_dsa.pub [email protected]

它要求输入密码这一事实无疑是一个好兆头,但我不希望它提示输入密码或密码(如果我按下密码上的“返回”键,就会出现密码)

答案1

这是因为您的私钥已被加密......

您可以使用以下命令将密钥添加到 ssh 代理ssh-add或从密钥中删除密码(以及加密):

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


编辑

哦,我刚刚意识到您尝试使用您的公钥进行身份验证...您想在那里使用私钥:

ssh -v -i /root/.ssh/id_dsa [email protected]

为了确保万无一失,文件内容id_dsa.pub将进入~backup/.ssh/authorized_keys网络服务器。您可以使用以下命令自动执行此操作

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

答案2

当我拥有的私钥不是 OpenSSH 格式时,就会发生这种情况。

我最初使用 PuttyGen 在 Windows 上生成了密钥,但却被同样的东西弹出。

我可以通过在 PuttyGen 中加载密钥并单击“转换”将其转换为 OpenSSH 格式来修复它。

答案3

有几件事。

首先,如果 KEY 要求输入密码,则密钥是随密码一起生成的。其次,如果系统随后提示输入密码,则密钥未通过身份验证。这意味着,您需要重新生成 SSH 密钥(或按照 @rbtux 的建议进行更改)并修复 authorized_keys 文件。

ssh-keygen -t {dsa|rsa} -b {1024|2048|4096} -C “可选注释” -f id_examplekey

大括号内的项目是选项、类型和位大小(显而易见:dsa > rsa,4096 > 1024 - 就“安全”而言)。

然后,您需要将公钥(.pub)添加到authorized_keysauthorized_keys2文件(人们普遍误以为 .pub 是供本地使用,但它旨在进行比较)中,因此在服务器的.ssh文件夹中。

$ cat id_examplekey.pub >> authorized_keys{,2}

然后,在您的终端,您应该确保关键权限是chmod 600 id_example,并且为了减轻输入所有这些内容的麻烦,您可以设置配置文件:~/.ssh/config在您的本地机器上(这是一个骨架,您可以对其进行大量自定义):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey

答案4

尝试https://wiki.gentoo.org/wiki/Keychain

这是一种包装ssh-agentssh-add

优点:只要不重启,就不需要反复输入密码。可用于crontab

或许有帮助。

相关内容