ssh 密钥存在于远程,但仍提示输入密码?

Ric*_*ard 4 linux ssh debian

为什么会这样?

$ ssh-copy-id me@server
/usr/local/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/local/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.

$ ssh me@server
me@server's password:
Run Code Online (Sandbox Code Playgroud)

ssh 仍然提示输入密码,即使它说密钥已经存在于远程服务器(这是 Debian)上。

更新:.ssh文件夹的内容:

$ ls -al ~/.ssh
total 72
drwx------   9 me  staff   306 22 Apr 13:20 .
drwxr-xr-x+ 65 me  staff  2210 22 Apr 13:18 ..
-rwxr-xr-x   1 me  staff  1397 22 Apr 11:49 config
-rw-------   1 me  staff  1679 25 Feb 16:54 id_boot2docker
-rw-r--r--   1 me  staff   410 25 Feb 16:54 id_boot2docker.pub
-rw-------   1 me  staff  1675  6 Jan 14:00 id_rsa
-rwxr-xr-x   1 me  staff   381  6 Jan 14:00 id_rsa.pub
-rw-------   1 me  staff  4884 13 Mar 17:29 known_hosts
-rw-r--r--   1 me  staff  4492  9 Jan 11:33 known_hosts.old
Run Code Online (Sandbox Code Playgroud)

Jür*_*ann 6

如果启用了公钥认证,请检查 sshd 配置文件

在 /etc/ssh/sshd_config 中搜索

#PubkeyAuthentication yes
Run Code Online (Sandbox Code Playgroud)

如果它被注释掉,请删除前导的“#”。如果设置为“否”,则将其更改为“是”

正如@Darius 提到的,请同时检查设置AuthorizedKeysFile它应该被注释掉以获取默认行为。然后在其中创建一个authorized_keys文件~/.ssh/并将您的公钥字符串添加到该文件中。Debian 文档中描述了如何执行此操作

注意~/.ssh/在您的主目录中的文件夹上设置的权限。只有所有者必须具有读/写权限。

chmod -R go-xwr ~/.ssh
Run Code Online (Sandbox Code Playgroud)

可以修复权限