CentOS 7 SSH 使用证书登录

1. 登录到服务器,生成 SSH 的密钥和公钥

ssh-keygen -t rsa

将公钥复制到 authorzied_keys 文件

cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

修改 authorized_keys 权限为 644,.ssh 权限为700

chown -R 700 ~/.ssh
chown -R 644 ~/.ssh/authorized_keys
ll -a .ssh #查看用户权限 

备注,生成的证书不留空证书密码的话,别人有证书也无法登录。


2. 修改服务器 ssh 配置

修改 sshd_config 配置文件 vi /etc/ssh/sshd_config,修改配置参数

# 允许密钥认证
PubkeyAuthentication yes
# 公钥保存文件
AuthorizedKeysFile .ssh/authorized_keys
# 取消 SSH 不希望home目录和~/.ssh目录对组有写权限【注意】
StrictModes no

网上有些文章提到 RSAAuthentication,RSAAuthentication (rsa认证)是只支持第1代ssh通讯协议使用的配置项,在CentOS7.4中被废除了。


重启 sshd

systemctl restart sshd


3. 下载私钥进行登录

下载服务器上的 ~/.ssh/id_rsa 私钥文件到本地,修改文件权限:

chmod 600 id_rsa

否则的话,会提示如下:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: UNPROTECTED PRIVATE KEY FILE!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/test/cert/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/test/cert/id_rsa": bad permissions


进行 ssh 登录

ssh -i /Users/ice/Downloads/id_rsa root@192.168.1.133
ssh -i /Users/ice/Desktop/id_rsa root@192.168.1.133 -p 8822


4. 禁止使用密码登录

编辑/etc/ssh/sshd_config,将 PasswordAuthentication 的值修改为no,即 “PasswordAuthentication no”,然后重启sshd。


备注:

配置ssh免密码登录后,仍提示输入密码的解决方法:

首先我们就要去查看系统的日志文件

tail /var/log/secure -n 20

发现问题的所在:

sshd[9049]: Authentication refused: bad ownership or modes for file /root/.ssh/authorized_keys

从字面上可以看出是目录的属主和权限配置不当,查找资料得知:SSH不希望home目录和~/.ssh目录对组有写权限,通过下面几条命令改下

sshd_config 设置 StrictModes no


修改时间 2021-09-21

真诚赞赏,手留余香
赞赏
随机推荐
JS触摸拖动div的移动,类似拖动电子地图
php图片压缩
Nodejs base64编码与解码
Photoshop 色彩基础
xcode ios 模拟器没有HOME按键解决方法
语法图(Syntax diagram)、铁路图(railroad diagrams)
SQLite数据库的id字段,怎么设置成从1开始自增
用FileReader读取input[type=file]中的文件
NETFLIX纪录片: 设计的艺术 - 平面设计
MySQL中SELECT COUNT()速度很慢的情况