SSH无密码登录:如何在Linux中设置和禁用?

一个优秀的服务器管理员使用多个强密码,这些密码很难记住;然而,每次访问远程服务器时输入每个密码都很麻烦和不方便。为了解决这个问题,在本教程中,我们将讨论无密码的ssh以及如何在linux上配置它!

什么是无密码ssh?

无密码ssh允许您将客户端的ssh公钥导出到远程服务器,这样客户端就可以在不需要密码的情况下登录。实现这一点的方法是使用非对称密钥对。

身份验证过程如下:

当客户端尝试访问ssh服务器时,服务器首先检查客户端的公钥是否被授权。如果被授权,身份验证过程将继续。如果未被授权,过程将结束,您将无法访问服务器。

如果服务器授权了客户端的公钥,服务器会使用客户端的公钥加密一条消息。一旦服务器加密了消息,它就会将其发送给客户端。

客户端接收到服务器发来的消息。一旦接收到消息,客户端会尝试使用私钥解密这条消息。如果客户端使用私钥解密了消息,服务器将检测到,并且与ssh服务器的连接建立。

如果客户端无法解密服务器发送的消息,则连接到服务器的过程将中止。

图像来源:sebastien saunier

为什么使用ssh无密码登录

无密码ssh相对于传统基于密码的登录方法有几个重要的优点。使用无密码ssh值得的一些最重要的优点包括:

方便和安全的登录

您不需要记住和输入密码即可连接到ssh服务器,这使得身份验证过程更加方便。此外,它基于公私钥加密,消除了通过中间人和其他网络钓鱼攻击窃取密码的风险。

自动化备份任务

使用rsync和其他实用程序,您可以自动化生成在美国办公室生成的内容的每周备份,并将其保存在位于中国的办公室中。该过程将通过ssh进行加密,并且完全自动化,因为您不需要输入任何密码。

挂载远程文件系统

如果您需要使用sshfs挂载远程文件系统,无密码ssh非常有用。通过在不需要密码的情况下访问sshfs服务器,我们可以在启动客户端时使sshfs服务器自动挂载。

此外,多个git服务器使用ssh公钥身份验证。因此,您用于连接到ssh服务器的非对称密钥对可以有其他用途,例如在连接到我们的git服务器时进行身份验证。

在linux中设置ssh无密码登录

#1. 确保已安装ssh服务器和客户端

首先,您必须确保将充当服务器的系统上已安装了ssh服务器。为此,我们需要打开终端并输入以下命令:

sudo apt-get install openssh-server

如果在我们的操作系统中未安装新软件包,则将充当服务器的计算机已经安装并运行了ssh服务器。同样地,确保将充当客户端的系统具有连接到ssh服务器所需的必要软件包。为此,请打开终端并输入以下命令:

sudo apt-get install openssh-client

现在,大多数linux发行版都默认安装了ssh客户端和服务器。

#2. 生成非对称密钥对

一旦您确定ssh服务器和客户端已安装所需的软件包,您可以生成非对称密钥以在不输入任何密码的情况下访问ssh服务器。

为此,在充当客户端的计算机上,您需要打开终端并输入以下命令:

ssh-keygen -b 4096 -t rsa

每个命令参数的含义如下:

ssh-keygen:生成密钥对的命令。

-b 4096:表示要生成的非对称密钥的大小为4096位。您可以选择的其他大小,例如1024或2048。

-t rsa:表示用于生成密钥对的算法必须是rsa。我们可以使用的其他算法包括dsa、ecdsa、rsa1和ed25519。

执行命令后,将会询问您要保存密钥的位置和要为其指定的名称。只需按enter键。这样,密钥将保存在标准位置,即/home/ user /.ssh/,并且将具有标准名称id_rsa。

接下来,会询问您是否要输入密码以加密私钥。由于我们希望在不输入任何密码的情况下连接到服务器,因此只需按enter键而不输入任何密码。

最后,会要求您重新输入密码。由于我们没有输入任何密码,所以再次按enter键。

执行这些步骤后,非对称密钥将在 ~/.ssh 位置创建。

#3. 将ssh公钥复制到远程服务器

通过ssh实现无密码访问的两种类型的ssh密钥:非机密公钥(公钥)和机密密钥(私钥),id_rsa是您的私钥,id_rsa.pub是您的公钥。

您需要将公钥复制到远程服务器,可以使用ssh-copy-id命令或手动操作。

ssh公钥复制命令的典型语法如下。

ssh-copy-id   [email protected]

以下示例可能更清楚:

ssh-copy-id   [email protected]

另一种选择是登录到远程服务器并在目录~/.ssh中创建一个文本文件,例如,通过运行以下命令。

nano ~/.ssh/authorized_keys

复制你本地机器上文件~/.ssh/id_rsa.pub的内容到这个文件中,保存文件并退出文本编辑器。

#4. 通过ssh测试无密码访问

要测试是否无密码ssh,请尝试访问ssh服务器:

$ ssh remote_username@server_ip_address

如果一切顺利,你将立即登录,无需任何密码。

在linux中禁用ssh无密码登录

要禁用ssh无密码登录,请使用您喜欢的文本编辑器打开ssh配置文件。在大多数发行版中,配置文件位于/etc/ssh/sshd_config。

找到包含permitemptypasswords yes的行,并将permitemptypasswords yes更改为permitemptypasswords no

保存更改到配置文件并退出文本编辑器。

重新启动ssh以应用更改:

sudo systemctl restart sshd 

最后的话

无论密码多么复杂,都不够安全,当你有很多服务器或需要频繁登录时,这个过程变得低效。使用非对称密钥的无密码ssh身份验证不仅更方便,而且更安全,可以保护你免受钓鱼攻击。

你也可以探索对称加密

类似文章