如何设置无密码 SSH 登录

远程访问计算机已成为 IT 世界的重要组成部分,尤其是在当今由于 COVID19 而每个人都在家工作的情况下。 主要有两种远程连接机器的方法,具体取决于您的操作系统,例如 Linux 的 SSH 和 Windows 的 RDP。 但是每次我们尝试连接远程服务器时,我们都必须输入密码。 那么如何设置无密码SSH登录呢? 在本教程中,我们将指导您进行相同的操作。

SSH 的工作原理是分别在目标(远程)和源(客户端)机器上安装 SSH 服务器和 SSH 应用程序。

在客户端安装 SSH 应用程序后,您可以提供与远程服务器相关的信息。 在服务器端,将有一个 SSH 守护进程,它不断检查客户端连接请求的特定 TCP/IP 端口。 一旦客户端使用正确的凭据发起连接请求,SSH 守护进程就会开始与客户端交换身份数据以建立安全的远程连接。

您可以按以下类型登录远程 SSH 服务器:

  • 密码认证
  • 公钥认证(无密码)

在本教程中,我们将了解如何设置基于公钥或无密码的 SSH 登录。

如何设置无密码 SSH 登录

在无密码或基于密钥的身份验证中,我们创建一对密钥——

  • 私钥: 安全秘密地存储在客户端。
  • 公钥: 存储或提供给我们要访问的服务器。

当我们尝试使用身份验证密钥与远程服务器连接时,将根据远程服务器由公钥创建一条消息。 该消息只能使用基于客户端 – 服务器的私钥读取。 读取该消息后,客户端-服务器将向远程服务器发送响应以验证并建立连接。 创建并设置密钥后,整个过程将自动完成。

如何创建 SSH 密钥

因此,在我们创建新的密钥对之前,让我们检查一下您的系统上是否已经有密钥对,为此,您可以在命令行中运行以下命令:

ls -al ~/.ssh/id_*.pub  

如果您找到密钥,那么您可以将它们用于进一步的过程,否则您可以创建新的密钥。 要生成新的密钥对,请打开命令行并输入以下代码:

ssh-keygen -t rsa  

Enter 并接受默认位置。 接下来,您将被要求输入密码。 这取决于你是否愿意。 如果您不想要它,请按 Enter 否则输入密码以增加额外的安全层。 此外,不使用密码短语将帮助您自动化许多任务。 击中后 Enter,您的密钥将被创建。 您可以使用此命令列出您的密钥。

ls ~/.ssh/id_*  

现在我们已经生成了我们的密钥,是时候复制您想要访问的远程服务器上的密钥了。 我们将使用 ssh-copy-id 命令执行此操作。 在命令行中键入以下命令:

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]_ip_address  

您将被要求输入 remote_user 密码。 输入正确的密码后,公钥将存储在远程服务器中。

现在您无需密码即可登录远程服务器。 使用以下命令立即建立连接:

ssh [email protected]_ip_address  

如何禁用密码验证

因此,当我们创建了 SSH 密钥时,现在我们可以禁用密码身份验证以确保安全。 在禁用密码验证之前,请确保您已将公钥存储在远程服务器上,并且您可以使用验证密钥登录。

要禁用密码验证,请输入以下命令并以 root 用户身份打开 SSH 配置文件或 sudo 特权用户。

sudo nano /etc/ssh/sshd_config  

然后搜索“password authentication”这一行,修改如下:

PasswordAuthentication no 

更改后,保存文件并重新启动 SSH 服务。

sudo systemctl restart sshd  

现在,您无需密码即可登录远程服务器。

结论

SSH 是一种安全且简单的连接远程服务器的方法。 这是一个简单而常见的 Linux 活动,您可以学习它以供日常使用。 您甚至可以使用身份验证密钥设置无密码 SSH 登录。