Linux网络服务-1-1-ssh双向秘钥对验证-2-配置

Linux网络服务-1-1-ssh双向秘钥对验证-2-配置

Scroll Down

设置服务器只允许使用本地private key登录服务器,一定程度上增加安全性

1、首先使用ssh-keygen生成public/private key,ssh-keygen命令也会自动创建.ssh目录

参数解析:-t type密钥类型(rsa、dsa...),-f生成文件名,-C备注

image.png

*.pem 主要用来https,这个相当于被签名的公钥,也就是证书
*.pub 这个就是公钥,主要用来ssh登录
*.pem里可以是公钥也可以是私钥,而.pub是 openssh 使用的公钥

2、查看生成的pub文件(public key),并将其重定向到user家目录下的.ssh/authorized_keys文件中( 没有此文件就创建它 )

image.png

3、修改authorized_keys文件的权限为600,仅允许本用户使用

image.png

4、编辑sshd配置文件/etc/ssh/sshd_config

# 启用公告密钥配对认证方式
PubkeyAuthentication yes 

# 设定PublicKey文件路径,一般为当前用户家目录下等我.ssh/authorized_keys文件
AuthorizedKeysFile .ssh/authorized_keys 

# 表示不能单使用密码进行验证
PasswordAuthentication no  # 表示不能单使用密码进行验证

image.png

5、修改完配置文件,重启sshd服务

image.png

验证操作

6、按照以前的方式使用user的账户密码尝试登录,发现直接无法登陆

image.png

7、使用xshell等终端工具连接时使用private key文件登录

image.png
image.png

登陆成功

image.png

Linux支持每个用户使用自己的密钥文件进行双密钥验证登陆服务器,也就是说每个用户可以拥有自己的密钥文件

# 普通用户创建双密钥认证过程
adduser XXX
su XXX
cd
mkdir .ssh
cd .ssh
ssh-keygen -m PEM -t rsa -C "XXX's private pem" -f XXX.pem
# 一路回车
cd ..
chmod -R 700 .ssh/
cd .ssh
cat xxx.pem.pub >> authorized_keys
chmod 600 authorized_keys
# 使用lrzsz工具下载密钥
sz xxx.pem

# 使用root用户修改sshd配置文件:
vim /etc/ssh/sshd_config
PubkeyAuthentication yes
# 这个路径不用修改
AuthorizedKeysFile %h/.ssh/authorized_keys
# %h 代表当前登录用户的家目录

systemctl restart sshd

随后使用该密钥进行登陆即可