技术解析

Ubuntu14.04LTS 关于 SSH 无密码登录的一个问题
0
2021-07-05 05:43:26
idczone
发现我的服务器只有 Root 账户才能无密码 SSH 登录,其他使用 adduser 创建的账户如 guest 账户等都不能无密码登录,本来是希望通过改 SSH 端口和禁止 root 远程登录然后通过免密码登录 guest 然后 su 到 root 这种方法来加强安全的,无奈 guest 账户居然无法免密码登录
你的“无密码登录”是指用密钥吗?
我从 14.04 用到 16.04 ,也没遇到什么只能用密码登录的情况

指免密码 RSA 钥匙对登录

这就是我好疑惑的地方啊,一样的配置方法,只有 root 可以免密码登录

其他账户的.ssh 里没有认证主机能登陆才怪呢。

怎么认证?我就是本地生成钥匙对,然后把公钥上传到 guest 账户下的.ssh 里面的 authorized_keys 了

我想起来 /etc/ssh/ssh_config 里面有个 authorized_file 之类的,是不是只能指定一个认证文件,然后我只指定了 root 下的.ssh 目录的 authorized_keys ,所以 guest 账户无法通过认证?

我 Linux 半桶水望赐教啊

每个账户的 directory 下的.ssh 里面对应你 ssh_configd 的 authorized_file 位置有一个对应的密钥,就应该可以了

贴 auth.log ,服务端的

RSAAuthentication yes
PubkeyAuthentication yes
%h/.ssh/authorized_keys
这三项。你看看你有没有误设过 AuthorizedKeysFile 。

默认:
AuthorizedKeysFile .ssh/authorized_keys
另外注意用户目录下的.ssh 目录和.ssh 目录下的 authorized_keys 文件的拥有者和权限,对于用户本身是 0600 权限。

AuthorizedKeysFile %h/.ssh/authorized_keys
这条就是指定各个用户目录下的.ssh/authorized_keys
StrictModes no
另外就是权限问题了,可以尝试把 StrictModes 改为 no

~/.ssh 目录权限 700 里面文件权限 600

应该是你权限不对。这事以前在客户那里遇到过好多次。

我这里遇到的问题和解决是这样的:
我的 vps 有 root 和 user 两个用户,我生成了一对密钥,想要使用同一个 *.pub >> authorized_keys 。但是只有 root 可以无密码登录, user 用户还是会询问密码。我又生成了一对密钥,两个用户使用两套密钥就可以了。
我还有一个问题:
同一套 key 可以给不同的 vps 共用,但是为什么不能给同一个机器的不同用户使用?

不要手动编辑 authorized_keys 文件,那个文件对权限什么的限制很严格,稍微错一点也登录不了。
用 ssh-copy-id 命令
用 ssh-copy-id 命令
用 ssh-copy-id 命令

觉得 11 楼说的文件权限可能性最大

我知道,没确保所有帐号都能通过认证和登录都不敢关闭 root 登录,另外 allowUser 都必须要看的
不过你提醒的对,万一不小心就完蛋了。。。
这坑挖的有点大
我当然是两套钥匙对了

@klesh

越发觉得楼主用的 ubuntu server 跟我用的不一样了
为了安全要禁用 root 登录?首先要问你能 root 登录是怎么搞出来的。。。你领导知道么。

有一些 vps 云主机初始化出来的的 ubuntu 默认就是一个 root+密码,可能楼主是这么搞出来的

原来如此,你说这个我也有印象了,貌似云上的不是用自己镜像弄出来的真是这样的,我错怪楼主了……
我这里 ubuntu server 的物理机太多了,所以忽略了云

AWS 也没有 root 帐户,但我是 linode 的,初始化有 root 帐户的

是的,镜像问题,我不是镜像

用户 foo:
chown -R foo:foo /home/foo/.ssh
chmod 500 /home/foo/.ssh
chmod 400 /home/foo/.ssh/authorized_keys

并没有卵用

每次 hexo d 都要密码,但是 root 是可以免密码的,为什么新建的 git 却没有办法?也生成了密钥了。
同问?

要配置,具体 git -h

密钥传错的可能性也不是没有。。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服