我正在尝试使用公钥从 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_keys
和authorized_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-agent
,ssh-add
优点:只要不重启,就不需要反复输入密码。可用于crontab
。
或许有帮助。