【原创】SSH 使用证书免密登录远程服务器

前言

1、概要

之前分享了从 Linux 如何免密登录另一台 Linux,今天分享如何从 MacOS 的 SecureCRT 上免密登录(证书)远程的 Linux 服务器。

2、相关环境

Ubuntu 18.04.5
OpenSSH 7.6
MacOS 10.15.7
SecureCRT 8.7.2

正文

1、配置 PubkeyAuthentication 认证

$ cat /etc/ssh/sshd_config | grep -i pubkey
#PubkeyAuthentication yes

该配置项目正常情况下默认是注释掉的,也就是 yes,即已经开启了证书认证,不用作任何调整。

如果是某些云服务商的 VPS 则可能此项设置为 no 了,那么将此项设置为 yes 即可:

PubkeyAuthentication yes

2、在需要被登录的服务器上生成公钥私钥

$ ssh-keygen

默认使用的就是 rsa 加密算法,然后什么都不输入,直接默认回车(Enter)即可。然后会在 ~/.ssh 目录下生成两个文件:id_rsa 是私钥文件,id_rsa_pub 是公钥文件。

$ pwd                 
/home/jiangzl/.ssh
$ ll
total 2K
-rw------- 1 jiangzl jiangzl 1.7K Oct  5 09:28 id_rsa
-rw-r--r-- 1 jiangzl jiangzl  396 Oct  5 09:28 id_rsa.pub

3、复制公钥到 authorized_keys 文件

然后将 id_rsa.pub 文件内容复制到 authorized_keys 文件中(该文件一般是没有的)

$ pwd                 
/home/jiangzl/.ssh
$ cat id_rsa.pub > authorized_keys

4、配置 authorized_keys 的文件权限

然后给 authorized_keys 文件更改权限,此步骤非常重要,不然登录失败,而且必须设置 644 权限,这是 openssh 的官方要求。

$ chmod 644 authorized_keys

5、下载 id_rsa 私钥文件

然后下载 id_rsa 的私钥文件(下载方法有很多,比如 ftp,lrzsz,此处略),下载后的文件名可以任意更改,服务器上的 id_rsa 文件名请不要更改。不过一般改为 主机名+用户名.pem,比如:

node1_jiangzl.pem

6、使用 SecureCRT 为例进行连接

新建一个连接(略),然后打开属性设置(Properties),输入远程服务器 hostname,Port,Username(注意:此用户名与在服务器上配置公钥私钥的用户必须相同),然后在 “Authentication” 栏取消 “Password” 的前面的复选框的勾选,再选中 “PublicKey”,点击右侧的 “Properties”

然后选择 “Use session public key setting”,再在 “Session settings” 下方点击右侧的按钮选择从远程服务器上下载的私钥文件,然后点 “OK” 就行了

最后,点击创建与配置好的 SecureCRT SSH 连接就可以连接到远程服务器的 SSH 服务了。

总结

使用证书来免密登录远程服务器的方式也挺简单的,而且这种方式相对于密码登录来说也要更安全一些,但请保管好你的私钥文件,不然私钥文件泄漏了仍然会对服务器造成风险。

如果是安全性要求较高的服务器,建议每隔一断时间重新生成新的公钥与私钥,这样能增加安全性。

You may also like...

发表评论

电子邮件地址不会被公开。