注意:这是不是与热门问题重复。 为什么使用公钥身份验证时,我仍然收到 ssh 密码提示?
我有一篇原创文章,但我没有得到太多对我有帮助的答案。我将尝试详细解释我的 3 天问题。
我如何将 id_rsa.pub ssh 密钥添加到我的 Ubuntu 服务器中:
我所做的是通过我的普通 Windows 10 计算机通过 git scm 终端创建它(可以在这里找到https://git-for-windows.github.io/)。我不得不使用 git,因为 Windows 10 中的普通 cmd 提示符不起作用。我通过 ssh-keygen 生成它,它为我生成了 2 个密钥,一个 id_rsa 和一个 id_rsa.pub。
之后,我进入 Putty 终端,登录远程服务器,并在 /home/superjohnny 文件夹(我的 sudo 用户)中创建一个 .ssh 目录,并在 .ssh 文件夹中创建一个名为authorized_keys 的文件夹。我将 id_rsa.pub 密钥复制并粘贴到authorized_keys文件夹中,然后通过执行 chmod 600 .ssh/authorized_keys 添加了 600 个权限。
完成此操作后,我进入 /etc/ssh/sshd_config 并将以下内容添加到我的配置设置中:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
所有这些行也都没有注释。然后我做了 sudo service ssh restart ,然后在尝试登录时仍然收到密码提示。这种情况已经持续了一个星期
我尝试过的方法: 我已经使用了上面讨论的两个线程来尝试获得答案,并且我还广泛使用了谷歌搜索。以下是我使用过的方法。
1. 将密钥放在一行上 我尝试在计算机上的 git scm 终端中使用以下命令:
cat ~/.ssh/id_rsa.pub | awk '{print}' ORS=' '
上面的命令据说不会执行任何操作,因为当我复制它时密钥已经在一行上,只是终端无法容纳该密钥。这是我用来查找该命令的线程。 https://stackoverflow.com/questions/36818651/how-to-display-output-on-single-line
使用 wc 命令: 使用这个命令:
wc ~/.ssh/authorized_keys
我得到的输出是:
1 3 398 /home/superjohnny/.ssh/authorized_keys
检查我的主目录是否已加密: 我使用了以下命令:
ls -A /home/superjohnny
我得到了以下输出:
.bash_history .bash_logout .bashrc .cache .profile .ssh .viminfo
没有找到 .encrypted 文件夹。
进入调试模式以检查额外信息: 在会话中我执行了以下命令:
ssh -v superjohnny@myip
得到的结果是:
debug1: Found key in /home/superjohnny/.ssh/known_hosts:1
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/superjohnny/.ssh/id_rsa
debug1: Trying private key: /home/superjohnny/.ssh/id_dsa
debug1: Trying private key: /home/superjohnny/.ssh/id_ecdsa
debug1: Trying private key: /home/superjohnny/.ssh/id_ed25519
debug1: Next authentication method: password
这肯定是对某些事情的暗示,但在网上浏览了一段时间我找不到太多关于这个问题的信息,只在这里找到了一个关于它的线程:https://askubuntu.com/questions/54670/passwordless-ssh-not-working 这个标题只是告诉我重新创建我已经完成的密钥文件很多的次
使用 grep 命令: 使用以下命令:
grep -v '^[[:space:]]*$' ~/.ssh/authorized_keys | wc -l
我得到的输出是:
1
检查日志消息: 使用以下命令:
sudo vi /var/log/auth.log
我在同一天收到了很多错误,同样的错误,但我只会发布其中的一部分:
Apr 25 04:14:01 ramnode CRON[977]: pam_unix(cron:session): session closed for user root Apr 25 04:54:01 ramnode CRON[1076]: pam_env(cron:session): Unable to open env file: /etc/default/locale: No such file or directory
除了 4 月 25 日之外,我在其他任何日子都没有收到任何其他消息。
使用 sshd 进入调试模式:
正在做
/usr/sbin/sshd -d
给我一个输出:
debug1: sshd version OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: could not open key file '/etc/ssh/ssh_host_rsa_key': Permission denied
Could not load host key: /etc/ssh/ssh_host_rsa_key
debug1: could not open key file '/etc/ssh/ssh_host_dsa_key': Permission denied
Could not load host key: /etc/ssh/ssh_host_dsa_key
debug1: could not open key file '/etc/ssh/ssh_host_ecdsa_key': Permission denied
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
debug1: could not open key file '/etc/ssh/ssh_host_ed25519_key': Permission denied
Could not load host key: /etc/ssh/ssh_host_ed25519_key
debug1: setgroups() failed: Operation not permitted
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
但是在命令前面添加 sudo 如下:
sudo /usr/sbin/sshd -d
给我一个输出:
debug1: sshd version OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type ECDSA
debug1: private host key: #2 type 3 ECDSA
debug1: private host key: #3 type 4 ED25519
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
Set /proc/self/oom_score_adj from -800 to -1000
尝试查看主目录权限是否必须更小: 我尝试更改主目录权限,因为我认为这些权限可能不允许 .ssh 目录工作。我使用了以下命令:
chmod 755 ~/
但是当我使用 sudo service ssh restart 重新启动终端时,这根本没有任何作用,然后当我重新登录到另一个终端时,它仍然提示我输入密码。
尝试禁用密码 我已尝试禁用密码并且不退出我的分离状态,因此如果不起作用,我可以更改它。我通过进入
/etc/ssh/sshd_config
但是当我进入新的终端屏幕时,出现以下错误:
Disconnected: No supported authentication methods avaliable(server sent: publickey
当我尝试禁用密码登录以便系统尝试使用 ssh 密钥时,我收到的 /var/log/auth.log 消息是这样的:
May 1 09:02:00 ramnode sshd[16905]: error: Received disconnect from 64.121.77.168: 14: No supported authentication methods available [preauth]
May 1 09:02:13 ramnode sudo: superjohnny : TTY=pts/1 ; PWD=/home/superjohnny ; USER=root ; COMMAND=/usr/bin/vi /var/log/auth.log
May 1 09:02:13 ramnode sudo: pam_unix(sudo:session): session opened for user root by superjohnny(uid=0)