设置服务器只允许使用本地private key登录服务器,一定程度上增加安全性
1、首先使用ssh-keygen生成public/private key,ssh-keygen命令也会自动创建.ssh目录
参数解析:-t type密钥类型(rsa、dsa...),-f生成文件名,-C备注
*.pem 主要用来https,这个相当于被签名的公钥,也就是证书
*.pub 这个就是公钥,主要用来ssh登录
*.pem里可以是公钥也可以是私钥,而.pub是 openssh 使用的公钥
2、查看生成的pub文件(public key),并将其重定向到user家目录下的.ssh/authorized_keys文件中( 没有此文件就创建它 )
3、修改authorized_keys文件的权限为600,仅允许本用户使用
4、编辑sshd配置文件/etc/ssh/sshd_config
# 启用公告密钥配对认证方式
PubkeyAuthentication yes
# 设定PublicKey文件路径,一般为当前用户家目录下等我.ssh/authorized_keys文件
AuthorizedKeysFile .ssh/authorized_keys
# 表示不能单使用密码进行验证
PasswordAuthentication no # 表示不能单使用密码进行验证
5、修改完配置文件,重启sshd服务
验证操作
6、按照以前的方式使用user的账户密码尝试登录,发现直接无法登陆
7、使用xshell等终端工具连接时使用private key文件登录
登陆成功
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
随后使用该密钥进行登陆即可