无法通过 SSH 和公钥与用户 B 连接(用户 A 可以)

无法通过 SSH 和公钥与用户 B 连接(用户 A 可以)

解决了。user_B正是主目录上的组可写位欺骗了我。

我对此没什么主意了。任何提示都将不胜感激。

考虑以下设置:

  • S运行 Ubuntu 的服务器、用户boldewynuser_Auser_B
  • 两台笔记本电脑AB,每台都有一个本地用户boldewyn(有一个id_rsa密钥用于登录S)和第二个密钥id_rsa_A/ id_rsa_B。所有密钥都存储在中/home/boldewyn/.ssh。两台都运行 Ubuntu。
  • user_A并且user_B如果S密码为空,则只能通过公钥和 SSH 进行登录。

    +--------+            +-------------------+            +--------+
    | laptop |            |       server      |            | laptop |
    |   A    |            |         S         |            |   B    |
    |        |            |                   |            |        |
    +--------+    SSH     +-------------------+    SSH     +--------+
    |id_rsa_A|------------|< user_A   user_B >|------------|id_rsa_B|
    +--------+            +-------------------+            +--------+
    |id_rsa  |------------|<    boldewyn     >|------------|id_rsa  |
    +--------+            +-------------------+            +--------+
    

有效的方法:

  • 从任何笔记本电脑登录boldewyn(使用id_rsaS:/home/boldewyn/.ssh/authorized_keys

  • A以用户身份从笔记本电脑登录user_A(使用id_rsa_AS:/home/user_A/.ssh/authorized_keys:)ssh -i id_rsa_A user_A@S

我的问题:在笔记本电脑上,B完全相同的设置失败user_B。我无法登录S,因为出于某种原因,密钥不被接受,并且出现密码提示(user_B没有密码,没有选择)。

我检查过的内容:

  • 在笔记本电脑上B

    • ~/.ssh检查了所有内容的权利
    • 将公共部分放在sid_rsa_B中并且:有效(密钥没有损坏等)boldewyn.authorized_keysssh -i id_rsa_B boldewyn@S
    • ssh -vvv:嗯,没什么帮助:只是告诉我,publickey现在跳过了方法。没有给出原因。
  • 在服务器上S

    • 经过三重检查的user_B文件.authorized_keys
    • 检查了 的权利/home/*/.ssh和所有内容(特别是user_A与进行了比较user_B
    • 检查是否$HOME已设置(通过sudo -u user_B -i
    • 检查所有用户是否都在/etc/ssh/sshd_configs中AllowUsersAllowGroups顺便说一下,还有 )

其他的东西:

我能想到的user_A和之间的唯一区别user_B是,我用创建了后者adduser -M(不创建主目录;它之前已经存在)。但是,我再三检查,/home/user_B和所有相关子级都归user_B和他的主要组所有。

答案1

你有没有再三检查过/home/user_B(以及 和/home/user_B/.ssh/home/user_B/.ssh/authorized_keys具有适当的权限:除用户外不可写入,即模式 755 或更严格?

答案2

我认为这可能与您生成这些密钥的方式有关。我会再试一次。密钥是使用 ssh-keygen 工具生成的。也许在生成一组密钥时,在生成过程中使用了密码。当提示您输入密码时,您可以尝试按 Enter 键。将该密钥的 pub 部分复制到 ubuntu。确保删除 .ssh/authorized_keys 文件中有问题的条目。再想想:如果 cat pub 文件,请确保在将 pub 文件复制到 authorized_keys 文件时使用 >>(附加)而不是 >(替换_)。(cat id_rsa.pub >> .ssh/authorized_keys)。

我有点惊讶。我在工作中使用过我的方法,使用 Solaris 和 Cygwin,在家里使用由 Centos、Slackware、Debian 和 Ubuntu 组成的 Linux Lan。你的私钥可能与公钥不匹配吗?当你生成密钥时,你会得到一对密钥,公钥将按照传统方式复制到目标机器主目录下的 .ssh/authorized 密钥文件中。如果你重新生成密钥,则必须复制新的 .pub 文件。新的私钥不会与旧的公钥配对。我注意到你的主目录中似乎有一个 .authorized_keys 文件夹。我从未尝试过。我认为正常位置是在 /home/user_name/.ssh/authorized_keys 文件夹中。我使用从 6 开始的任何版本的 Solaris、Freebsd 以及各种迭代和版本的 Linux 都没有遇到问题。祝你好运

艾伦

相关内容