ssh-copy-id不起作用


19

我试图在CentOS 5.4上设置无密码的SSH登录:

  1. 我在客户端上生成了RSA公钥。
  2. ssh-copy-id从客户端到服务器。
  3. 已验证的〜/ .ssh / authorized_keys包含客户端密钥。

客户端仍然提示输入密码。我错过了什么?

谢谢。

编辑:检查ssh_config和建议的权限。这是来自客户端的调试信息:

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
saguna@192.168.1.75's password: 

我也明白了:(
马特·乔纳

Answers:


19

9/10倍是因为〜/ .ssh / authorized_keys的模式不正确。

chmod 600 ~/.ssh/authorized_keys

2
仅供参考,我在github.com/centic9/generate-and-send-ssh-key上创建了一个小脚本,该脚本一口气运行了必要的步骤,并确保了所有文件/目录权限,这总是让我头疼...
centic

5
如果这对某人不起作用,则还应该查看@Gilles的答案。特别是,除用户外,其他任何人都无法写入~/.ssh目录目录。
ostrokach 2015年

我知道这很旧,但是感谢@centic。我确定我的权限是正确的,但是从来没有想过要检查$ HOME和.ssh /目录。
jdferreira

为我工作。谢谢!
伊万·科夫通

12

检入/ etc / ssh / sshd_config以允许使用密钥进行身份验证。您应该在其中添加类似的内容,并确保这些行未被注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

PS:不要忘记在修改文件后重新启动sshd(/etc/init.d/sshd重新启动)


除了Patkos Csaba的答案之外,请检查本地和远程〜/ .ssh文件夹的权限。

就我而言,AuthorizedKeysFile已被注释掉,我还必须使用一条绝对路径到authorized_keys
2014年

我收到“无法打开与您的身份验证代理的连接”。尝试ssh-add时
Manticore

这应该是选定的答案
Francisco Tapia

也许您不理解这些评论。注释掉的行显示默认值。如果要使用默认值,则无需取消注释。如果要覆盖默认值,只需取消注释该属性。
clearlight

5

我发现系统出现问题是用户目录(/ home / username)设置了错误的权限集。它曾经是drwxr-x-w-并且必须是drwxr-xr-x(只有拥有者具有写许可权)。解决方案是使用chmod:

sudo chmod 0755 /home/username

1
!为我工作。ssh给我一个密码提示,因为我降低了权限。
clearlight

4

我不是专家,但也遇到过此类问题,除了所有其他建议,这里还有两美分。

有时,ssh-copy-id将错误的密钥复制到远程服务器(如果您有多个密钥和/或对密钥文件使用非默认名称,则可能会发生),或者身份验证代理配置错误。

这是手册页中的引文:

如果指定了-i选项,则使用身份文件(默认为〜/ .ssh / id_rsa.pub),而不管ssh-agent中是否有任何密钥。否则,如果满足以下条件:ssh-add -L提供任何输出,则它优先于标识文件使用该输出。

所以基本上您想检查一下:

  • 您的系统身份验证代理(通常是ssh-agent)会看到您打算使用的密钥(检查ssh-add -L输出)
  • ssh-copy-id相同的密钥复制到远程计算机(只需使用密码登录到远程服务器并检查的内容~/.ssh/authorized_keys
    • 如果在远程服务器上看不到所需的密钥,则可以隐式告诉ssh-copy-id要复制的密钥:ssh-copy-id -i ~/.ssh/some_public_key

希望能有所帮助。


1
你钉了!深入研究 ssh-copy-id的问题是:DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1),它将默认为按字母顺序排列的第一个键-在我的情况下,我有一个id_boot2docker.pub(显然是boot2docker ssh东西的默认名称)。似乎周围有很多不同的ssh-copy-id实现;我的来自brew install ssh-copy-id,而后者又来自openssh-portable。我的手册页中明确提到了这种行为……
Christian Ulbrich

3

最常见的问题是服务器端的无效权限。检查您的主目录是否没有,~/.ssh并且~/.ssh/authorized_keys除您之外其他任何人都可以写(特别是它们不能组写)。

如果那不是问题,请运行ssh -vvv server并查看客户端的对话视图。特别是,请检查客户端是否正在尝试与服务器一起使用密钥。


谢谢!!!我不明白为什么,但你的主目录~/.ssh以及~/.ssh/authorized_keys不能被任何人,但你可写。
ostrokach 2015年


1

我尝试了其他修复程序,但发现我必须将主目录更改为不能被其他人写入。主目录为777。我将其更改为755,它可以正常工作。


1
欢迎使用@dulcana,他尝试设置一个无密码的ssh登录名,将权限更改为755可以如何解决该问题?
弗朗西斯科·塔皮亚

@FranciscoTapia,这是因为sshd确保其他用户不会恶意创建authorized_keys文件,拒绝通过ssh键登录,组或其他人可以在其中写入文件或他们的任何父母。其他答案也提到了这一点。
安赫尔

0

在我的情况下,/ etc / ssh / sshd_config包含以下参数:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

但是ssh-copy-id创建了一个名称为authorized_keys的文件,因此我不得不将条目修改为新名称。有关已弃用的authorized_keys2的更多信息


0

作为对较新的CentOS 7的Omer Dagan答案的补充,请使用:

journalctl -f -u sshd

用于查看服务器上的sshd日志。


-1

问题是我在/ etc / ssh / ssh_config中破坏了RSAAuthentication

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.