Centos7设置Windows(Linux)私钥登录并禁止root密码登录

问题背景

应公司护网行动,需将一些弱密的服务器进行整改,为更加贴合护网的宗旨且为服务器安全考虑,索性直接使用私钥进行远程连接,并禁止使用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的话,请参照上一步"秘钥文件创建"即可。

Centos7设置Windows(Linux)私钥登录并禁止root密码登录_第1张图片

第二步:将本地的公钥追加到"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私钥文件进行登录即可。

Centos7设置Windows(Linux)私钥登录并禁止root密码登录_第2张图片

你可能感兴趣的:(linux)