在Raspberry Pi上设置SSH密钥相对容易,并且可以使通过网络连接到SSH密钥更加方便。在本教程中,我们’ll说明如何创建和配置SSH密钥,以便您无需输入密码即可远程连接到Pi。
SSH密钥是使用以下命令创建的“公钥加密”。这是一个概念,其中公共密钥存储在远程设备(即Raspberry Pi)上,所有者使用私钥来证明他们拥有密钥。可以将公共密钥提供给所有人,但必须将私有密钥保密。
实际上,键是存储在文本文件中的长字符串字符。
要继续本教程,您必须使用键盘和监视器直接访问Pi,或者使用SSH或VNC进行远程访问。
步骤1:创建SSH目录& 授权密钥 File
首先,导航到主目录:
cd ~
并创建一个名为“ssh” :
mkdir .ssh
导航到新目录:
cd .ssh
并创建一个空的“authorized_keys” file :
touch 授权密钥
第2步:设置权限
ssh目录的权限需要修改:
chmod 700 ~/.ssh
接下来更改权限“authorized_keys”文件,因此只有Pi用户可以读取和写入:
chmod 600 ~/.ssh/authorized_keys
第3步:创建新的密钥对
如果要创建新的密钥对,则可以使用ssh-keygen实用程序轻松完成。
导航到SSH目录:
cd ~/.ssh
然后运行ssh-keygen实用程序:
ssh-keygen
系统将提示您输入保存密钥文件的位置。按ENTER接受默认设置。
系统将要求您输入密码。这是可选的。如果您使用密码,则在使用密钥时可能会要求您输入密码。这是一个额外的安全步骤,您将不得不决定是否要使用它。键入密码短语或将其保留为空白,然后按Enter以完成操作。
如果您使用密码短语,请不要忘记它!
此过程应为您创建两个文件。一个名为的公钥“id_rsa.pub”和一个匹配的私钥,名为“id_rsa”.
Add the contents of the Public key to the 授权密钥 file using :
cat id_rsa.pub >> 授权密钥
一些客户喜欢PuTTY样式键。我建议立即创建此格式,以便将来有选择。以下命令将安装puttygen并创建新密钥的PuTTY版本:
sudo apt-get install putty-tools
然后 :
puttygen id_rsa -o id_rsa.ppk
您 should now have three files :
- id_rsa
- id_rsa.pub
- id_rsa.ppk
将这些文件复制到安全位置。您用来连接到Pi的客户端需要私钥(id_rsa或id_rsa.ppk)。这可能是PC,笔记本电脑或手机。您要连接的树莓派使用公钥(id_rsa)。
只要您具有匹配的私钥,就可以在多个设备上使用相同的公钥。
一旦将密钥安全地存储在其他地方,就可以从Pi中删除它们:
rm id_rsa rm id_rsa.pub rm id_rsa.ppk
步骤4:添加现有密钥
如果您已经有公钥/私钥对,则可以将公钥添加到“authorized_keys” file.
您’有两种方法可以将公共密钥详细信息放入密钥文件。
第一种方法是直接编辑密钥文件:
nano authorized_keys
并将公钥文件的内容粘贴到编辑器中。使用CTRL-X,Y和ENTER保存更改并返回命令行。
第二种方法是将公钥文件(例如id_rsa.pub)复制到.ssh目录中。然后使用以下命令将其添加到密钥文件中:
cd ~/.ssh cat id_rsa.pub >> 授权密钥
哪里“id_rsa.pub”是您的公钥文件。
更新authorized_keys文件后,您可以删除id_rsa.pub文件:
rm id_rsa.pub
步骤5:配置SSH客户端
此时,您应该可以使用自己喜欢的SSH客户端连接到Pi,而不是指定密码,而是可以将其指向私钥。确切的执行过程将取决于所使用的客户端。
例如,这是WinSCP中的会话设置:
必须指定IP地址和用户名。下“Advanced”它允许选择私钥文件。 WinSCP倾向于使用Putty样式的键,但是只需单击一下即可将OpenSSH密钥转换为ppk。
其他SSH客户端以类似的方式运行。
第6步:连接
如果配置正确,则无需输入密码即可建立与Pi的连接。
尽管许多客户端可以记住密码,但SSH密钥的优点是您可以在所有客户端中使用相同的密钥文件。如果您更改密钥文件,您将赢得’不必在您可能记得的所有位置更改密码。
您还可以将私钥存储在可移动驱动器上或加密的容器(即Veracrypt)中。这意味着如果您的计算机被盗,则与设备的连接将赢得’即使有人可以打开您的SSH客户端并查看您保存的会话,该命令也无法正常工作。没有密钥文件,无法访问!
使用puttygen将PPK文件转换为私钥和公钥
在将来的某个时候,您可能需要将Putty PPK文件转换为OpenSSH样式密钥文件。以下是可用于将PPK转换为私钥和公钥的命令:
puttygen my_key.ppk -O private-openssh -o my_key.private puttygen my_key.ppk -O public-openssh -o my_key.public
本指南将允许您使用SSH密钥登录到Pi,但是标准的用户名/密码方法仍然可以使用。确保已将默认的Raspberry Pi密码更改为安全的密码。我倾向于使用至少15个字符长的密码。
可能完全依赖SSH密钥并禁用使用密码登录的功能。但是,这超出了本指南的范围。
1条评论
问题?请参阅此答案及其下面的评论:
//raspberrypi.stackexchange.com/a/4621