这个问题已经被问过很多次了,但解决方案对我来说都不起作用。
我试图用密钥从 Ubuntu 系统 ssh 到我的 Synology NAS,但我仍然被要求输入用户密码,因为私钥太公开了
我在 /opt/duplicati/config/.ssh id_rsa 和 id_rsa.pub 中创建了密钥,
然后使用 ssh-copy-id 将公钥复制到我的 NAS。
但是当我尝试通过 ssh 进入我的 NAS 时,出现了以下错误
ssh -p '9922' -i /opt/duplicati/config/.ssh/id_rsa.pub '[email protected]'
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/opt/duplicati/config/.ssh/id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/opt/duplicati/config/.ssh/id_rsa.pub": bad permissions
[email protected]'s password:
奇怪的是,该问题与私钥有关,但它抱怨公钥的 0644 权限太开放。
解决方案是将两个密钥和 .ssh 文件夹的权限降低到 0400 或 0600,但当我这样做时,似乎 ssh 无法再读取该文件,并且出现此错误
Load key "/opt/duplicati/config/.ssh/id_rsa.pub": error in libcrypto
我已经尝试过使用 root 和管理员用户执行此操作,但无法正常工作。
这是因为我的密钥不在常用主文件夹 ~/.ssh/ 中吗?
从另一个 ubuntu 系统,我能够使用存储在 ~/.ssh/ 中的密钥通过 ssh 进入我的 NAS
答案1
ssh -p '9922' -i /opt/duplicati/config/.ssh/id_rsa.pub '[email protected]'
您的实际问题是,您对“-i”参数使用了错误的密钥文件。扩展名为“.pub”的文件包含密钥的公共部分。不带“.pub”扩展名的相应文件包含密钥的私有部分。当您运行 ssh 客户端以连接到远程服务器时,您必须向 ssh 客户端提供私钥文件,而不是公钥文件。
您可能有一个名为“/opt/duplicati/config/.ssh/id_rsa”的文件,没有“.pub”扩展名。这是您在运行 ssh 时应该使用的文件:
ssh -p '9922' -i /opt/duplicati/config/.ssh/id_rsa '[email protected]'
^--- no extension
您收到有关权限的错误,因为私钥文件包含敏感信息,因此程序ssh
要求私钥文件具有防止他人读取的权限。公钥文件(扩展名为“.pub”的文件)不包含敏感信息,因此创建密钥文件的工具会创建权限不那么严格的公钥文件。