解决了。user_B
正是主目录上的组可写位欺骗了我。
我对此没什么主意了。任何提示都将不胜感激。
考虑以下设置:
S
运行 Ubuntu 的服务器、用户boldewyn
和user_A
user_B
- 两台笔记本电脑
A
和B
,每台都有一个本地用户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_rsa
和S:/home/boldewyn/.ssh/authorized_keys
A
以用户身份从笔记本电脑登录user_A
(使用id_rsa_A
和S:/home/user_A/.ssh/authorized_keys
:)ssh -i id_rsa_A user_A@S
我的问题:在笔记本电脑上,B
完全相同的设置失败user_B
。我无法登录S
,因为出于某种原因,密钥不被接受,并且出现密码提示(user_B
没有密码,没有选择)。
我检查过的内容:
在笔记本电脑上
B
:~/.ssh
检查了所有内容的权利- 将公共部分放在s
id_rsa_B
中并且:有效(密钥没有损坏等)boldewyn
.authorized_keys
ssh -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_config
s中AllowUsers
(AllowGroups
顺便说一下,还有 )
- 经过三重检查的
其他的东西:
我能想到的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 都没有遇到问题。祝你好运
艾伦