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 #查看用户权限 

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

然后,下载服务器上生成的 ~/.ssh/id_rsa 私钥文件到本地。

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

修改时间 2024-11-05

声明:本站所有文章和图片,如无特殊说明,均为原创发布,转载请注明出处。
随机推荐
WordPress 自定义 JWT 授权和验证
JavaScript 使用 html2canvas 生成图片
JavaScript 和 CSS 检测横屏适配
Nine 主题
WordPress用户的user_login, user_nicename, display_name 和 nickname有什么区别
JavaScript 基本语法
HTML 对话框元素 dialog
Node.js querystring 模块