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

真诚赞赏,手留余香
赞赏
随机推荐
PHP文件上传进度:文件切片上传
浅谈javascript的Touch事件
树妖2
PHP下载文件,隐藏真实文件地址
HTTP 协议入门
Ecshop 后台增加一个左侧列表菜单menu菜单的方法
新媒体工作者的日常
esModuleInterop 到底做了什么?
CentOS 邮件提醒
CentOS 7 SSH 使用证书登录
QQ号

微信联系我

夜间模式切换
回到顶部