树莓派怎么免密登录,配置SSH密钥免密码登录

这篇文章详细记录了如何配置Raspberry Pi的SSH密钥,不仅可以免密登录,还可以极大地增强树莓派的安全性,虽然专门说的树莓派,但其他的Linux发行版也是类似的。

Raspberry-Pi-SSH-Key-Pairs-Thumbnail.jpg

使用SSH密钥进行身份验证是保护树莓Pi安全的绝佳方式,因为只有拥有SSH私钥的人才能登录系统。

它的工作原理是生成一个SSH密钥对,登录方保留SSH私钥,公钥配置到树莓派里,通过公钥验证身份。

如果你比较重视系统安全,可以选择这种方式,比密码验证要安全很多。

首先,对于攻击者来说,它更难被拦截,蛮力难以破解。一个标准的SSH密钥通常为2048个字符,相比之下,普通密码的长度不超过32个字符。

设备清单

下面是所有的设备清单,点击链接可以直达特别优惠购买。

建议

可选

在Windows上生成SSH密钥

要在基于Windows的操作系统上生成SSH密钥,我们可以使用名为PuTTY的软件。

你可以从他们的网站下载PuTTY。确保你得到完整的软件包版本,因为完整功能的才能生成SSH密钥。

1. 把PuTTY下载并安装到你的电脑上,打开与它同时安装的名为PuTTYgen的程序。

2. 在电脑上打开PuTTYgen,点击 “Generate “按钮,如下图所示。

按下这个按钮后会生成公共和私人SSH密钥,我们将使用这些密钥与树莓派进行SSH连接,在我们的例子中,这将是Raspberry Pi。

01-PuttyGen.png

3. PuTTYgen开始生成SSH密钥时,它会要求你在下图所示的空间内移动鼠标。

这样做,可以确保它生成的SSH密钥应该是真正独特的,很难有人能够快速生成相同的密钥。

02-PuttyGen-Generating-Key.png

4. 现在已经生成了SSH密钥,接下来还需要做一些事情。

第一个(1.)是给这个SSH密钥设置一个名字,让这个名字好记,这样你就知道连接时需要什么SSH密钥。

其次(2.)你应该设置一个passkey,这可以确保即使有人设法窃取你的私人SSH密钥,他们仍然需要输入密码。

这个密码作为第二道防线。如果你不想输入密码,那么你可以跳过这一步,将这两个字段留空。

但是,如果你重视自己的安全,我不建议这样做。

第三(3.),将公钥和私钥保存到电脑的安全位置。记下你保存这两个文件的位置,因为你需要这些文件来与你的Raspberry Pi建立连接。另外,确保你的文件以.ppk结尾,这样PuTTY就能接收到它们。

最后(4.)复制下图所示文本框中的公共SSH密钥。点击文本框按CTRL+A再按CTRL+C可以快速选择所有文本。

我们很快就会需要这个文本来添加到我们的Linux系统SSH授权密钥文件中。

03-PuttyGen-Generated-Files.png

5. 本教程的下一步将引导您把SSH公钥复制到linux设备。在这个例子中,我们将使用运行Raspbian操作系统的Raspberry Pi。

在Linux系统上生成SSH密钥

1. 在Linux系统上生成SSH密钥是比较容易的,因为做这件事的SSH工具通常是包含在主操作系统中的。这意味着我们不必安装任何额外的软件包。

要生成SSH密钥,在你的Linux设备上打开一个终端会话,输入以下命令。

ssh-keygen

2. 在ssh-keygen工具运行后,你将首先被要求输入一个保存密钥的文件。在本教程中,只需按Enter键,将其作为默认值。

由于我们是在Raspberry Pi Raspbian安装上进行的,这个默认目录位于/home/pi/.ssh/id_rsa。

3. 设置好保存密钥的文件后,我们现在需要决定是否要使用密码。

就个人而言,我们建议你利用密码口令,因为它可以确保你的私钥有一点额外的安全性。

这种额外的安全性意味着,即使有人设法窃取文件,因为他们将需要输入密码来解密私钥。

因此,在这一步输入密码(确保密码安全而又好记)。

另外,如果您不喜欢输入密码,您可以按回车键,但请记住,这意味着任何拥有您的私人密钥的人都可以访问您的设备而无需输入任何密码。

4. 现在你可以选择利用ssh-copy-id工具复制你的SSH公钥,或者手动复制密钥本身。

如果你想手动复制密钥,那就按照步骤5和步骤6来做,否则跳到下一节 “使用SSH工具复制公钥”。

5. SSH密钥现在应该生成了,所以我们可以抓取公钥文件的内容,我们将需要该文件的内容来设置我们要使用SSH密钥进行认证的设备上的认证。

要获取公钥的内容,你可以在基于Linux的设备上使用以下命令。

cat ~/.ssh/id_rsa.pub

6. 有了公钥的内容,我们现在可以进行下一步,将SSH密钥添加到authorized_keys文件中。

使用SSH工具复制公钥

1. 在你的Linux设备上(在我们的例子中,它是我们的Raspberry Pis之一),运行以下命令。确保将IP_ADDRESS替换为您要复制密钥的远程机器的IP地址。

请注意,您将被要求用您的用户名和密码登录该远程机器,因为该工具需要这些来复制您的公钥。

ssh-copy-id -i ~/.ssh/id_rsa IP_ADDRESS

完成后,这个工具会自动将你的公钥添加到远程机器上的authorized_keys文件中。

手动复制公钥

1. 回到Raspberry Pi上,我们需要利用一些命令来设置我们的authorized_keys文件。这是SSH守护进程在使用私钥进行身份验证时检查的文件。

首先,让我们创建我们的authorized_keys文件所在的文件夹。要做到这一点,我们将使用安装命令和一些参数来设置正确的权限。

在Raspberry Pi上运行以下命令。

install -d -m 700 ~/.ssh

2. 创建好文件夹后,继续把公钥放到authorized_keys文件中。

运行以下命令编辑它。

nano ~/.ssh/authorized_keys

3. 在这个文件中,复制并粘贴之前用Windows设备或Linux设备生成的公共SSH密钥的内容。

SSH会根据存在的公钥对任何私钥进行验证,看是否是合法的连接。

4. 把你的SSH公钥输入到authorized_keys文件中,可以按Ctrl + X然后按Y,最后按Enter键保存并退出该文件。

5. 保存文件后,还需要确保它有正确的权限,需要运行以下命令。

这些命令将为文件分配正确的权限,以便当你尝试登录时,它可以被SSH读取。

如果你在Raspbian上没有使用默认的 “pi “用户,请确保在下面的命令中用你想使用的用户名称替换 “pi”。

sudo chmod 644 ~/.ssh/authorized_keys
sudo chown pi:pi ~/.ssh/authorized_keys

6. 现在保存了SSH私钥,并且正确设置了权限,现在可以继续登录了。我们将在禁用密码验证之前进行操作,这样我们就不会把自己锁在Raspberry Pi的外面。

在Linux上使用私钥进行连接

1. 在你当初生成密钥的Linux设备上,利用私钥是非常容易的。

大多数基于Linux系统的SSH工具默认的设计是在尝试建立连接时自动使用私钥。

只要你使用的是你用来生成私钥的机器,你就可以使用下图所示的SSH命令。

系统会自动尝试使用我们之前创建的私钥进行连接。

由于将公钥复制到远程主机的authorized_keys文件中,它就能识别我们传入的私钥并接受我们的连接。

ssh IP_ADDRESS

2. 如果你设置了密码,现在会要求你在继续之前输入密码,这是解锁你的私钥所需要的。

输入密码后,您现在应该可以登录到远程机器。

如果你不喜欢每次都要输入密码,不用担心,因为我们将在后面的教程中进入如何缓存。

使用PuTTY私钥连接到Raspberry Pi。

1. 在本节树莓派SSH密钥教程中,我们将向您展示如何使用您的私钥与PuTTY连接到Raspberry Pi。

使用私钥连接比较简单。

首先在电脑上打开PuTTY,输入Raspberry Pi的IP地址(1.),然后点击 “SSH “部分下的 “Auth”(2.

05-PuTTY-Change-Auth.png

2. 接下来,你需要按下 “Browser”按钮。这个按钮用来选择之前的私钥。

从浏览器中选择好私钥后,现在应该按 “Open “按钮开始连接。

05-PuTTY-Set-Private-Key.png

3. 连接后,首先被要求输入一个用户名,请确保这个用户名属于你使用的私钥,否则验证将失败。

输入正确的用户名后,如果你之前设置了私钥,现在会要求你输入一个密码。

输入正确的口令后,你将登录到SSH会话。现在可以完全禁用密码验证。

06-PuTTYLogged-In-With-API-Key.png

移除密码验证

1. 要禁用密码验证,我们需要修改sshd_config文件。

要修改这个文件,请在您的Raspberry Pi上运行以下命令。

sudo nano /etc/ssh/sshd_config

2. 在该文件中,我们需要找到以下一行,并将 “yes “改为 “no”。

这个简单的改变将完全禁用密码登录Raspberry Pi。从现在开始,只能通过私钥来进行SSH访问。

如果你找不到这一行,你可以用CTRL+W快速找到它。(如果你使用的是nano编辑器)

寻找

#PasswordAuthentication yes

替换为:

PasswordAuthentication no

3. 现在你可以按CTRL + X,然后按Y,最后按ENTER键保存并退出文件。

4. 现在对sshd_config文件进行了更改,应该重新启动我们的Raspberry Pi以确保更改被加载进来。

记住要确保你的私钥允许你连接到你的Raspberry Pi,因为密码在重启后将无法使用。

一切都没有问题后,请在您的Raspberry Pi上使用以下命令来重新启动它。

sudo reboot

5. 如果一切正常,你应该只有在拥有有效私钥的情况下才能执行SSH连接。

如果没有私钥,连接将被SSH代理拒绝。由于你不能再使用密码,保管好你的私钥是一项非常关键的任务,因为它是你现在远程访问设备的唯一途径。

如果你因为某些原因丢失了私钥或忘记了私钥的密码,仍有一种方法可以进入你的设备。

为了解决SSH连接可能出现的任何问题,您仍然可以将键盘和鼠标物理连接到设备上,以重新获得控制权。

要恢复通过SSH连接的密码访问,你应该尝试恢复我们对PasswordAuthentication设置所做的更改,然后重新按照教程设置SSH密钥。

缓存当前终端会话的SSH密码口令。

1. 如果你使用的是SSH bash工具,那么你可以在当前会话还在进行的情况下缓存私钥的口令。

要做到这一点,我们必须首先启动ssh-agent的另一个会话。我们可以通过在终端会话中运行以下命令来实现。

eval $(ssh-agent -s)

输入这个命令后,你会看到一个我们刚刚加载的ssh-agent的进程ID。你可以在以后使用这个进程ID来杀死代理,并移除密码缓存。

进程id应该会出现类似 “Agent pid 26484 “的东西,你需要记下这个数字。

2. 现在我们已经启动了ssh-agent的附加会话,让我们继续添加我们的私钥。

我们只要输入下面的命令就可以了,准备好输入你的私钥的口令。

ssh-add

3. 现在将您的SSH密钥添加到代理中,您应该能够登录到任何有您的密钥授权的远程机器,而无需输入密码。

4. 要从SSH-agent缓存中删除你的私钥,你需要杀死我们之前启动的ssh-agent。

最简单的方法是利用我们前面抓到的进程id。只要在’kill’命令后插入该进程id就可以杀死该进程。

kill PROCESSID

我希望这个树莓派免密登录教程对你有帮助,如果你有任何想法,技巧,那么请不要犹豫,在下面留言。

英文链接:https://pimylifeup.com/raspberry-pi-ssh-keys/

平均: 0 / 5. votes: 0

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 树莓派怎么免密登录,配置SSH密钥免密码登录

赞 (1)

评论

4+1=