问题背景


应公司护网行动,需将一些弱密的服务器进行整改,为更加贴合护网的宗旨且为服务器安全考虑,索性直接使用私钥进行远程连接,并禁止使用root密码进行远程登录。

具体做法


常见的Linux服务器远程登录的手法一般为:密码登录秘钥登录两种。显然秘钥登录相对更加安全(如果你非得说自己的私钥也可能被别人盗取,那菜菜也是 -.-!)。在进行操作之前,大家还得确定下自己的服务器上是否有.ssh目录来存在当前服务器上的公私钥文件,没有的话还得自己进行创建。

秘钥文件创建

注意:可以参考菜菜的这一篇博文 (SSH免密登录)

第一步:创建秘钥文件

# -C 设置注释文字,比如邮箱
# -f 指定密钥文件存储文件名
# -t 指定密钥类型,默认是 rsa ,可以省略
ssh-keygen -t rsa

第二步:创建"authorized_keys"

注意: 没有则创建,有的话就不用了。

> touch authorized_keys
> chmod 600 authorized_keys

秘钥登录设置

第一步:生成本地公私钥对

注意:
如果你是windows的话可以使用git bash或者windows的cmd(powershell)都行。
如果你是Centos7的话,请参照上一步"秘钥文件创建"即可。

第二步:将本地的公钥追加到"authorized_keys"文件中

注意: 是你本地的公钥文件不是你当前服务器的公钥文件,也就说你想用什么连接远程服务器就用哪里的公钥文件。

# 在远程服务器上执行"rz"命令将本地的公钥文件拉取到你的远程服务器。
# 如果你是两个Linux服务器,你可以使用scp或者先放置到本地再进行拉取都行。
> cd /root/.ssh 
> rz
 
# 将你刚刚拉过来的公钥文件合并到"authorized_keys"文件中
# 注意是合并不是覆盖!!! 也就是 "cat >> *" 两个">"。
> cat id_rsa.pub >> authorized_keys
 
# 查看一下"authorized_Keys"文件中是否已经包含了公钥文件中的内容。
> cat authorized_keys

第三步:修改"/etc/ssh/sshd_config"文件

注意: 是sshd_config不是ssh_config!!!(菜菜真是操碎了心~)

> vim /etc/ssh/sshd_config
 
 
# 禁用root账户登录,如果是用root用户登录请开启
PermitRootLogin yes
 
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no
 
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication    yes
PubkeyAuthentication yes
AuthorizedKeysFile   .ssh/authorized_keys
 
# 禁用密码登录
PasswordAuthentication no

第四步:重启ssh服务

注意: 先别重启,最好是先新建一个ssh,测试一下是不是OK的~

# 重启 sshd服务
> systemctl restart sshd
 
# 查看当前sshd的执行状态
> systemctl status sshd

第五步:验证登录

注意: 是用本机的私钥文件登录,私钥,私钥,私钥!!!

这一步就很随意了,不管你是xshell还是什么ssh工具选择windows本机的id_rsa私钥文件进行登录即可。

最后修改:2021 年 01 月 14 日 01 : 10 PM
如果觉得我的文章对你有用,请随意赞赏