在服务器上注册公钥后提示输入密码

在服务器上注册公钥后提示输入密码

注意:这是不是与热门问题重复。 为什么使用公钥身份验证时,我仍然收到 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

  1. 使用 wc 命令: 使用这个命令:

    wc ~/.ssh/authorized_keys
    

    我得到的输出是:

      1   3 398 /home/superjohnny/.ssh/authorized_keys
    
  2. 检查我的主目录是否已加密: 我使用了以下命令:

    ls -A /home/superjohnny
    

    我得到了以下输出:

    .bash_history  .bash_logout  .bashrc  .cache  .profile  .ssh  .viminfo
    

    没有找到 .encrypted 文件夹。

  3. 进入调试模式以检查额外信息: 在会话中我执行了以下命令:

    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 这个标题只是告诉我重新创建我已经完成的密钥文件很多的

  1. 使用 grep 命令: 使用以下命令:

    grep -v '^[[:space:]]*$' ~/.ssh/authorized_keys | wc -l
    

    我得到的输出是:

    1
    
  2. 检查日志消息: 使用以下命令:

    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 日之外,我在其他任何日子都没有收到任何其他消息。

  3. 使用 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
  1. 尝试查看主目录权限是否必须更小: 我尝试更改主目录权限,因为我认为这些权限可能不允许 .ssh 目录工作。我使用了以下命令:

    chmod 755 ~/
    

    但是当我使用 sudo service ssh restart 重新启动终端时,这根本没有任何作用,然后当我重新登录到另一个终端时,它仍然提示我输入密码。

  2. 尝试禁用密码 我已尝试禁用密码并且不退出我的分离状态,因此如果不起作用,我可以更改它。我通过进入

    /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)

答案1

我在一位非常好的朋友的帮助下找到了答案,他对我的问题非常耐心。问题是 Putty 客户端没有设置为接受我的密钥,我拥有授权的密钥文件和所有权限,只是直到现在才注意到这一小问题。

在我的 Putty 客户端中,我没有将私钥放入我的分离中,我最初以为远程服务器只会查看我的文件并检查密钥是否在那里。我错了,我的朋友告诉我这将是一个巨大的安全风险,并说私钥必须像这样放入 putty 中:

在此输入图像描述

也谢谢你们的帮助,我在解决这个问题的过程中学到了很多东西。

相关内容