如何在不输入密码的情况下通过 SSH 连接到服务器
在这篇文章中,我将向您展示如何绕过密码提示,并在您输入执行 SSH 命令后立即连接到您的服务器。
我们为什么要这样做呢?
连接到服务器时的麻烦之一是输入密码步骤。
现在,您可能会想 – 这没什么大不了的,这只是一个额外的步骤 – 但是如果您有一个相当复杂的密码需要从其他地方(笔记或密码管理应用程序)检索,该怎么办。或者您的工作需要您经常访问服务器,然后跳过输入密码等小步骤可以帮助加快速度。
了解它是如何工作的(而且它是安全的)
传统上,要登录服务器,您需要按时间顺序执行以下步骤:
- 键入
ssh username@domain.com
,按 Enter/Return - 输入/粘贴密码,按 Enter/Return
- 你在!
我们将取消第 2 步;插入ssh username@domain.com
并按下 Enter/Return 后,您会立即连接到服务器。那个怎么样?
别担心,这是非常安全的,只要您确保没有未经授权的人员可以访问您的 PC。
让我们开始吧。
1 – 收集以下信息
在我们深入执行之前,这里有一些您需要事先收集的有关您的本地计算机和远程服务器的信息。
将它们写在笔记中,或者至少让它们可以轻松访问。
(1.1) – 本地计算机中 SSH 文件夹的路径。
这是您机器上.ssh /的路径。它因操作系统而异。
例子:
- macOS—— _
/Users/username/.ssh/
- 窗——
/c/Users/username/.ssh/id_rsa.pub
有关如何在 Windows 10 中查找 ssh 文件夹路径的更多信息,请单击此处。
注意:对于 macOS 用户,键入命令cd ~/.ssh
通常会将您带到 .ssh 文件夹。
(1.2) – 远程服务器信息
您需要有关服务器的凭据和其他一些详细信息。简而言之,收集以下内容:
- 主机名/IP
- 用户名
- 密码
- 端口号
(1.3) – 远程服务器中“authorized_key”的路径
使用从1.2收集的信息,登录到您的服务器,找到“authorized_key”文件的路径。
该文件通常位于:/home/username/.ssh
。
您是否获得了所有必需的信息?太好了,让我们继续!
2. 获取 SSH 密钥
为了使无密码 SSH 登录正常工作,我们需要您本地计算机的 SSH 密钥。
首先,我将向您展示如何在本地计算机上检查现有的 SSH 密钥,如何删除现有的 SSH 密钥,最后创建一个新的 SSH 密钥。
如果您确定本地计算机中没有现有的 SSH 密钥,那么您可以直接跳到创建一个新的 SSH 密钥。
检查现有的 SSH 密钥
- 打开终端。
- 粘贴以下内容并按 Enter/Return
ls -al ~/.ssh
:。
如果该文件夹包含如下文件,则 SSH 密钥存在于您的本地计算机上。
- id_rsa
- id_rsa.pub
你可以保留它们,前提是你还记得它们各自的密码,否则我建议你删除它们。
如果该文件夹为空,则您已准备好创建新的 SSH 密钥。
删除现有的 SSH 密钥
- 打开终端。
- 粘贴
cd ~/.ssh && ls -al
并按 Enter/Return。这将带您进入 SSH 文件夹并列出其中的所有现有文件。 - 识别名称为“id_rsa”和“id_rsa.pub”的所有文件
- 使用以下命令将它们一一删除:
rm filename
。
例子:rm id_rsa.pub
。
注意:如果您在共享工作站上执行此操作或不确定要删除哪些文件,请不要继续。
生成新的 SSH 密钥
如果您的 SSH 文件夹是空的,那么它可能看起来像这样。
让我们开始生成一个新的 SSH 密钥。
- 打开终端。
- 粘贴以下代码,将“youremail@example.com”替换为您的实际电子邮件地址,然后按 Enter/Return
ssh-keygen -t rsa -b 4096 -C "youremail@example.com"
:。 - 按 Enter/Return (推荐)使用“id_rsa”作为默认文件名。
- 按 Enter/Return (推荐)创建一个没有密码的 SSH 密钥。
您的 SSH 密钥已成功创建,您的终端应输出类似于以下屏幕截图的内容。
3.上传SSH密钥到服务器
我们已经到了最后也是最后一步 – 将生成的密钥(公钥)上传到服务器。
- 打开终端。
- 键入
cd ~/.ssh
以进入 .ssh 文件夹。 - 在用实际服务器信息替换“username@domain.com”和“/path/to/server/.ssh/authorized_keys”后复制粘贴以下命令:
cat id_rsa.pub | ssh username@domain.com 'cat - >> /path/to/server/.ssh/authorized_keys'
。
上面的命令会将id_rsa.pub(从本地计算机)中的公钥复制到authorized_keys(在远程服务器中)。
如果命令正确执行,系统将提示您输入远程服务器的密码,输入密码,然后按回车/回车。
4.测试
就是这样!现在,让我们来测试一下。
- 打开终端。
- 通过输入登录到您的服务器
ssh username@domain.com
。
您应该能够在不输入密码的情况下登录。
注意:值得注意的是,无密码登录仅适用于添加我们公钥的用户。假设我们的服务器上有几个用户:root、john和jane。您已将公钥添加到authorized_keys
属于jane 的文件中。您将能够以 jane 身份登录 SSH 而无需密码,但是当需要以root或john身份登录时,您仍然需要提供密码。
最后一件事
复制以下代码,将“/path/to/.ssh/”替换为您的 .ssh 文件夹的实际路径,然后按 Enter/Return。
chmod 700 /path/to/.ssh && chmod 600 /path/to/.ssh/*
这将确保您新创建的 SSH 密钥安全地存储在 .ssh 文件夹中。