【原创】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 服务了。
总结
使用证书来免密登录远程服务器的方式也挺简单的,而且这种方式相对于密码登录来说也要更安全一些,但请保管好你的私钥文件,不然私钥文件泄漏了仍然会对服务器造成风险。
如果是安全性要求较高的服务器,建议每隔一断时间重新生成新的公钥与私钥,这样能增加安全性。
近期评论