SSH 在ssh-copy-id 之后仍需输入密码的问题

最近在使用Ansible,基于SSH。

远程服务器IP: 

192.168.200.193

以下提及的远程服务器都为该服务器。

远程用户:

ansible_user

在本地服务器中,ssh-keygen生成密钥之后,将通过ssh-copi-id将生成的公钥添加到远程服务器:

ssh-copy-id ansible_user@192.168.200.193

然后登录到远程服务器,在/home/ansible/.ssh/authorized_keys文件中能够看到本地服务器中生成公钥。

然后在本地服务器中使用ssh远程登录:

ssh ansible_user@192.168.200.193

奇怪的是,仍然需要输入密码。但在远程服务器上新建一个用户,执行上面的步骤,却能够生效。

如果此时使用ansible执行一些操作的话还会得到如下错误:

192.168.200.193 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
    "unreachable": true
}

看样子是权限的问题。

并且在/var/log/secure看到日志:

Authentication refused: bad ownership or modes for file /home/ansible_user/.ssh/authorized_keys

这时候观察ansible_user家目录的属性发现确实有点异常:

drwx------  12    1001 ansible_user  4096 3月  20 14:11 ansible_user

从/etc/passwd文件中看到ansible_user的信息:

ansible_user:x:0:0::/home/ansible_user:/bin/bash

这里跟家目录明显不符,记起之前通过root用户强行将ansible_user的uid改为了0。这也是导致家目录所属用户是UID(1001),而不是用户名的原因。

现在将/etc/passwd中的UID 0 改为1001即可。

 

当然出现该情况的还有一些其他原因,个人觉得这个是比较奇怪的原因之一。

 

posted on   xzysaber  阅读(10956)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示