为什么会发生这种情况?
$ 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:
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
答案1
请检查 sshd 配置文件是否启用了公钥认证
在 /etc/ssh/sshd_config 中搜索
#PubkeyAuthentication yes
如果注释掉,删除前导“#”。如果设置为“否”,则将其更改为“是”
正如@Darius 提到的,请检查设置,AuthorizedKeysFile
它应该被注释掉以显示默认行为。然后创建一个authorized_keys
文件~/.ssh/
并将您的公钥字符串添加到此文件中。如何执行此操作在此处描述在 Debian 文档中
注意~/.ssh/
主目录中文件夹的权限设置。只有所有者才必须具有读/写权限。
chmod -R go-xwr ~/.ssh
可以修复权限