使用 RSA 密钥进行 SSH 连接

使用 RSA 密钥进行 SSH 连接

平时用 SSH 连树莓派和虚拟机每次都要输入密码,比较烦人。Windows Terminal 出于安全原因是不支持记录密码进行自动连接的功能的,所以还是老老实实创建 RSA 密钥进行连接好了。

生成 RSA 密钥对

Windows 上可以用 Putty Key Generator 这个工具生成 RSA 密钥对:

使用 RSA 密钥进行 SSH 连接_第1张图片

点击菜单 key->Generate key pair

在打开的页面点击 Generate 按钮生成密钥对,等待一会后就可以生成一对 RSA 密钥。

使用 RSA 密钥进行 SSH 连接_第2张图片

RSA 密钥对本质上是两个用 RSA 算法生成的字符串,将对应的字符串保存起来就是密钥文件,可以用于身份验证。

理论上只要保存私钥(private key)就可以了,因为私钥是可以生成公钥的。但方便起见我们最好还是将私钥和公钥都保存起来。

点击 Save public key 将公钥保存到本地文件,可以用 .pub 作为文件后缀以表示这是 RSA 公钥。

点击 Save private key 将私钥保存到本地文件,文件以 .ppk 作为后缀进行保存。

保存私钥的时候会提示是否在没有设置密码的情况下保存,如果是用途比较敏感的私钥,可以额外添加密码来保护私钥,这样可以防止私钥丢失后被人恶意利用。

部分程序(比如 Windows Terminal)进行身份验证时使用的是 pem 私钥而非 ppk 私钥,所以最好转换一份 pem 私钥进行保存。

ppk 私钥转换成 pem 私钥很容易,通过 Conversions->Export OpenSSH Key 菜单即可,选择一个目录进行保存,文件后缀名使用 .pem

服务器公钥添加

为了能让服务器验证我们的私钥,需要将其对应的公钥保存到 Linux 服务器。

在需要用密钥进行登录的用户目录下创建一个 .ssh 目录:

[icexmoon@192 ~]$ mkdir .ssh

~/.ssh 目录创建一个文件 authorized_keys,并将刚生成的公钥内容写入:

[icexmoon@192 ~]$ cd .ssh
[icexmoon@192 .ssh]$ vim authorized_keys

写入的公钥内容是ssh-rsa xxxxx,这里的xxxxx指代实际的公钥内容。

注意ssh-rsa后边有一个空格。

SSH 客户端设置

还需要修改 SSH 客户端的设置,让其在连接目标服务器时使用私钥进行验证。

具体的设置方式因 SSH 客户端的不同而不同,我这里使用的是 WindowsTerminal。

Windows 系产品进行 SSH 连接时都用同样的设置方式,比如 VSCode 也同样如此。

打开C盘用户目录下的 .ssh 目录,比如我这里是 C:\Users\70748\.ssh

里边有一个 config 文件,打开并编辑(如果没有就创建)。

config 文件的格式如下:

Host 192.168.1.1
  HostName 192.168.1.1
  User root
  Port 22
  ForwardAgent yes
  IdentityFile "C:\Users\70748\.ssh\test.pem"

没太多好说的,应该很容易看懂,这里的 IdentityFile 就是用于登录验证的私钥文件。

The End,谢谢阅读。

参考资料

  • ppk如何转为pem
  • [LINUX使用RSA 密钥登录](https://blog.csdn.net/qq_35493807/article/details/125005919#:~:text=LINUX使用RSA 密钥登录 1 1、生成密钥( 公钥 与私钥); 2,2、放置公钥 (Public Key)到服务器~%2F. ssh %2Fauthorized_key文件中; 3 3、配置ssh客户端使用密钥登录。)
  • 配置RSA密钥使用ssh协议登录远程服务器

你可能感兴趣的:(开发工具,ssh,运维,RSA)