在此前的介绍中,我们登录SSH是采用密码的方式。事实上除此之外,SSH还能用RSA密钥来登录。这种方式更简便,也更安全。
有关RSA这种非对称加密的算法,详细了解可参考wiki。在SSH登录中,服务器(也就是我们的树莓派)持有公钥,而客户端(即用以控制的电脑)持有私钥。我们只需要造一对RSA密钥,并放入指定的位置。
这篇文章默认使用root账户登录。如果你没有这样做,当提示权限不足时,请在命令前加sudo
。有关root账户的获得,请参考上一篇文章。
生成密钥对
在安装了OpenSSH的Windows电脑上,在cmd中输入命令
ssh-keygen -t rsa
创建RSA密钥。此时会询问密钥的存放位置:
Generating public/private rsa key pair. Enter file in which to save the key (/home/Bear Dic/.ssh/id_rsa):
直接回车,使用默认(也就是系统盘用户 目录下的.ssh
文件夹)即可。
接下来会提示输入一个口令来保护密钥:
Enter passphrase (empty for no passphrase):
设置口令后,将来使用密钥登录时需要输入。考虑到方便性,常常不设置密钥,直接回车跳过。
然后RSA密钥就创建好了。在默认情况下,生成的密钥对在ssh的文件夹下,因而客户端可以直接使用。我们只需要配置服务器。在这里,id_rsa
文件是私钥,id_rsa.pub
文件是公钥。
拷贝到服务器
拷贝到服务器有两种方式。一种是用SSH,一种用SFTP。
SSH方法
首先在本地,将id_rsa.pub
文件全部复制到剪贴板。然后SSH连接到树莓派,键入
cd /root/.ssh/
如果提示不存在这个目录,那么先创建之:
mkdir /root/.ssh/ && cd /root/.ssh/
然后使用ls
命令查看当前目录是否存在名叫authorized_keys
的文件。如果不存在,则创建:
touch authorized_keys
这文件的权限只能是600,因而改变它的权限:
chmod 600 authorized_keys
随后编辑它:
vim authorized_keys
按下i
键进入插入模式。然后粘贴我们刚刚复制的公钥。Windows10的命令行在经过设置后可以使用Ctrl+V
,或者(在打开了快速编辑模式时)按一下鼠标右键。若无法这样做,可以点击cmd窗口的左上角,移动到编辑,选择粘贴。
然后按下esc
键,再键入:wq
后保存并退出。
SFTP方法
使用FlashFXP,操作就和在系统中差别不大。同样先在本地将id_rsa.pub
文件全部复制到剪贴板。FlashFXP窗口中,在root
目录下找到或右键-创建文件夹.ssh
,然后找到或右键-创建文件authorized_keys
。右键-编辑,粘贴之,然后Ctrl+S
保存后关闭。
右键authorized_keys
文件,点击属性(CHMOD)
,更改文本框中数值为600
,点击确定以保存设置。
此后,RSA密钥对登录就配置完成了。以后登录SSH时,将不再提示输入密码了。