为服务器root用户与普通用户配置免密登录


前言

若需要连接一台服务器,我们常使用 ssh 客户端,如 xshell 等软件连接服务器,或是使用 vscode 的 Remote - SSH 插件直接连接服务器进行代码开发。频繁地使用密码登录服务器难免有些麻烦,因此我们常常通过配置密钥实现免密登录服务器。本文记录了为服务器的root用户与普通用户设置免密登录的过程以及踩的坑。


本文主要记录过程遇到的问题以及解决方法,并非教程。因此过程记录不会太详细,关于免密登录的基本过程可以查阅其他资料

一、问题背景

  • 在租用了一台腾讯云的服务器之后,创建了一个名为gopher的普通用户
  • 在腾讯云控制台绑定密钥后root用户可以实现免密登录。
    1. 创建密钥或使用现有密钥
      创建密钥
    2. 由于腾讯云的设定,在绑定密钥后就无法使用密码登录
      绑定密钥后就无法使用密码登录了
      这是由于在完成密钥绑定之后会将/etc/ssh/sshd_config文件PasswordAuthentication字段设置为no
      PasswordAuthentication no
      

综上所述,此时可以免密登录root账户但是无法使用密码登录gopher用户,导致gopher处于无法登录的状态。因此希望给gopher用户也配置上免密登录。
修正:不知道为啥重装了一次系统之后再进行同样的操作,root 用户实现了免密登录之后, gopher 可以使用密码登录。那么实现 gopher 用户的免密登录就不需要用 root 用户去操作了,直接用 gopher 用户登录导入公钥即可。

二、操作步骤

1. 将root用户公钥复制到gopher用户目录下

登录root用户
执行下面的命令(示例):

# 创建文件夹
cd /home/gopher
mkdir .ssh
# 把公钥复制到gopher用户目录的.ssh目录下
cp /root/.ssh/authorized_keys /home/gopher/.ssh/authorized_keys

然后尝试直接登录gopher用户

ssh gopher@aaa.bbb.ccc.ddd
# 提示权限问题
Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 

这里问题出现了,为什么给用户配置了密钥对还是无法登录呢?

2. 给gopher用户读authorized_keys的权限

后面简单思考了一下,这是因为用户目录下的公钥文件是属于root用户的,gopher用户没有权限读,因此只需要给gopher用户读的权限就好了,因此执行下面的代码

cd /home/gopher/.ssh
chmod 644 authorized_keys

这样就可以免密登录gopher用户了。


总结

出现的问题主要是因为腾讯云的策略使得我们再绑定了密钥之后就无法使用密码登录了,因此必须给普通用户也配置免密登录,通过免密登录的基本原理,很容易就想到把公钥复制到用户目录下,但是遇到了文件权限的问题导致免密登录配置失败,给了权限之后就可以正常登录了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值