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


19

我正在尝试使用公共密钥从NAS SSH到网络服务器。NAS用户是“ root”,网络服务器用户是“ 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 backup@webserver.com

它要求输入密码短语的事实肯定是一个好兆头,但我不希望它提示输入密码或密码(如果我在密码短语上按“ return”,则提示输入密码)

Answers:


24

那是因为您的私钥已加密...

您可以ssh-add使用以下命令将密钥添加到ssh代理,也可以从密钥中删除密钥短语(及其加密):

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


编辑

哦,我刚刚意识到您尝试使用公共密钥进行身份验证...您想在此处使用私有密钥:

ssh -v -i /root/.ssh/id_dsa backup@webserver.com

只是为了确保绝对确定,文件的内容已id_dsa.pub放入~backup/.ssh/authorized_keysWeb服务器。您可以使用以下命令自动执行此操作

ssh-copy-id -i /root/.ssh/id_rsa.pub backup@webserver.com

仍然得到问题。它确实有效,并授予我“您的身份已被新密码保存”的信息。但是在我下次尝试登录时仍然要求输入密码。我不确定还可以尝试...
Andrew Atkinson 2012年

检查我更新的答案...也许有帮助...
andrekeller 2012年

谢谢,看来我可能正在尝试将公用密钥与公用密钥进行比较...我不需要删除密码短语
Andrew Atkinson 2012年

问题是我使用我的酒吧进行身份验证(一个愚蠢的错误)。谢谢!
Qix 2014年

6

当我拥有的私钥不是OpenSSH格式时,这发生在我身上。

我最初使用PuttyGen在Windows上生成了我的密钥,并且被同一东西弹跳。

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


2

有几件事。

首先,如果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

但是调试中的部分显示为:debug1:服务器接受密钥:pkalg ssh-dss blen 433这是否表示密钥已被接受?我没有密码重新创建了,还是一样吗?-我没主意吗?谢谢
安德鲁·阿特金森

@AndrewAtkinson看起来您在下面找到了它。您需要发件人计算机上的私钥(本地,客户端等),并将public.pub密钥添加到authorized_keys文件中。我的其他建议应帮助您节省时间:D祝您好运!
nerdwaller 2012年

您输入“主要是,如果KEY要求输入密码,那么密钥就是用它生成的。” <-是的,尽管我刚刚测试了发问者的行为,所以用-i做公共密钥$ ssh user@comp -i ~/.ssh/id_rsa.pub,并说了错误的权限和私有密钥将被忽略..所以我将权限更改为600,就像id_rsa一样,它要求输入密码。因此,的确,即使未使用密码生成公钥和私钥,也将要求您指定公用密钥的密码
barlop 2014年

2

对我来说,由于密钥本身是加密的,因此我执行以下步骤:

  • 启动ssh-agent: $ ssh-agent bash
  • 将标准身份密钥添加到密钥管理器: $ ssh-add
  • 如果要添加其他密钥,则: $ ssh-add /location/of/key

要随时检查,当前加载的密钥列表:

$ ssh-add -l

可以从此链接获取更多详细信息



1

这可能是因为您使用的是DSA公开密钥,该密钥在OpenSSH v7中默认为禁用。

如果您无法更改密钥对,则可能的解决方法是,通过更新/etc/ssh/sshd_config或等效的方式添加以下行,告诉webserver.com上的SSH守护程序接受这些密钥类型

PubkeyAcceptedKeyTypes=+ssh-dss

然后重新启动服务

/etc/init.d/ssh restart                     # or equivalent

0

在Mac OSX上,您可以使用以下命令将私钥添加到钥匙串:

ssh-add -K /path/to/private_key

如果您的私钥存储在〜/ .ssh中,并且名为id_rsa:

ssh-add -K ~/.ssh/id_rsa

然后将提示您输入密码,该密码将存储在钥匙串中。


如果Mac客户端可以工作,我需要在Linux客户端上做什么?
bbaassssiiee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.