Linux 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
ls -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


修改时间 2023-12-04

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
随机推荐
WordPress 常用接口
Git 放弃本地修改,强制和之前的某次提交同步
WordPress 侧边栏小工具
Node.js 使用 Jest 做单元测试
如何调整 iconfont 图标的位置和基线
使用 svg 作为背景图片
WordPress 按自定义排序的两种方法
WordPress 中如何在主题和插件中使用