前面内容中有用到SSH通过账号密码登录树莓派(远程服务器),其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。

密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。

一、创建密钥对

1、使用账号和密码登录需要设置的远程服务器,进入用户目录下的.ssh目录下,使用

cd /root/.ssh

如果出现以下提示,没有找到相应文件,原因是因为没有用root用户ssh登录过,执行一下ssh操作就会自动生成了

服务器连接的公钥私钥 密钥服务器_服务器


2、使用命令,然后根据提示依次输入yes,以及服务器启动密码

ssh localhost

服务器连接的公钥私钥 密钥服务器_远程服务器_02


3、重新执行cd /root/.ssh命令,出现下面现象,说明执行成功

服务器连接的公钥私钥 密钥服务器_服务器连接的公钥私钥_03


4、查看目录,没有没有进行过ssh密钥创建如下图所示:

服务器连接的公钥私钥 密钥服务器_服务器_04


5、执行ssh-keygen命令创建密钥对

ssh-keygen -t rsa -b 4096

执行密钥生成命令,基本上是一路回车既可以了,但是需要注意的是:执行命令的过程中是会提示呢输入密钥的密码的(如下图中红色箭头处,输入两次相同的,即是又一次确认密码),不需要密码直接回车就行。

服务器连接的公钥私钥 密钥服务器_远程登录_05


6、密钥生成后会在当前目录下多出两个文件,id_rsa和id_rsa.pub,其中id_rsa是私钥(敲黑板:这个很重要,不能外泄),id_rsa.pub这个是公钥

服务器连接的公钥私钥 密钥服务器_服务器_06

二、将公钥信息写入到私钥登录时的校验文件

1、把公钥拷贝到需要登录的远程服务器或Linux系统上,这里可以使用ssh-copy-id自动完成

ssh-copy-id -i /root/.ssh/id_rsa.pub root@149.28.224.140

注意,后面的IP地址是你自己服务器的地址。执行命令了会要求输入远程机器的密码,输入密码即可。

服务器连接的公钥私钥 密钥服务器_远程登录_07


执行完成,会发现Number of key(s) added:1,查看目录发现一个文件:authorized_keys,说明公钥添加成功

服务器连接的公钥私钥 密钥服务器_远程登录_08

三、将私钥下载到本地主机

刚才服务器生成的id_rsa私钥文件,我们要下载到本地主机上,我们使用的是sz命令,但是注意SSH远程登录程序putty有个弊端,就是用不了rz、sz(rz、sz命令用法可自行搜索查找)命令上传下载文件,很不方便。因为putty提供了相关工具上传和下载文件,所以我们使用的是Xshell(具体Xshell使用可自行查找)。
1、使用以下命令,将私钥下载到本地

sz id_rsa

出现以下现象,说明sz、rz命令没有安装,需要安装后才能使用。

服务器连接的公钥私钥 密钥服务器_密钥_09


2、安装sz、rz命令

apt install lrzsz

服务器连接的公钥私钥 密钥服务器_服务器_10


3、下载密钥,再次执行下载命令,会弹出本地文件,选择要保存的文件地址确认即可(注意文件夹名称不能有中文字符)

sz id_rsa

服务器连接的公钥私钥 密钥服务器_服务器_11


4、执行成功后,打开本地文件夹,会看到密钥文件

服务器连接的公钥私钥 密钥服务器_服务器连接的公钥私钥_12

四、使用密钥登录服务器

1、选择配置好的服务器,点击连接

服务器连接的公钥私钥 密钥服务器_远程登录_13


2、输入账号名

服务器连接的公钥私钥 密钥服务器_密钥_14


3、选择密钥方式登录,找到本地密钥文件,点击确认即可登录服务器

服务器连接的公钥私钥 密钥服务器_远程登录_15


4、大功告成

服务器连接的公钥私钥 密钥服务器_服务器连接的公钥私钥_16