Linux下实现免密码登录(超详细)

  • Post category:Linux

如题所示,本篇攻略将会详细讲解如何在Linux下实现免密码登录。

准备工作

在开始之前,我们需要做以下准备工作:

  1. 确认目标机器是否已安装所需软件:ssh、ssh-server
  2. 确认目标机器是否配置了公钥认证安全机制,若未配置则需要先配置。

配置公钥认证

以下将以一台新安装的Ubuntu服务器为例,来演示如何配置公钥认证。

  1. 在本地机器上打开终端并输入以下命令:
ssh-keygen -t rsa

该命令将会在本地机器上生成一对密钥,分别是私钥和公钥。其中私钥通常放在 ~/.ssh/id_rsa,公钥则是 ~/.ssh/id_rsa.pub

  1. 在目标机器上创建一个新用户,并为该用户创建一个 .ssh 文件夹:
sudo adduser username
sudo mkdir /home/username/.ssh
sudo chown username:username /home/username/.ssh
  1. 将本地机器上生成的公钥复制到目标机器上的.ssh/authorized_keys文件中:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@your.server.ip.address

在此处将 username 替换为第二步中创建的新用户名, your.server.ip.address 则是指目标服务器的IP地址。运行此命令后,会自动将本地机器上生成的公钥拷贝到目标机器对应的文件中。若拷贝成功,接下来便可以使用该新用户账号进行 SSH 连接了。

  1. 验证是否配置成功

使用下面的命令测试能否将公钥放入目标主机,如果能够成功登录说明配置成功,我们便可以使用该用户进行 SSH 免密登录:

ssh username@your.server.ip.address

SSH免密码登录

如果上述步骤都已完成,现在我们可以使用下面命令来进行SSH免密码登录:

ssh username@your.server.ip.address

运行该命令之后就能够直接登录到目标机器中了,无需输入密码。

示例说明

下面以两个具体的示例来说明:

示例一

我们经常需要从本地开发机器上登录到服务器进行开发和测试等。假设我们拥有一台名为 server1 的测试服务器,在本地机器上要经常使用SSH登录到该服务器上。

我们可以按照前面的步骤,在本地机器上为新建一个用户 test,然后在 server1 上为该用户配置公钥认证。最后,在本地机器上,我们就可以通过下面的命令免密登录到 server1 上了:

ssh test@server1

示例二

假设我们拥有两台Ubuntu服务器,分别是 server1server2。现在,我们希望从 server1 上的某个用户可以通过SSH免密码登录到 server2 上。

我们可以在 server1 上为该用户生成新的公私钥对,并将其公钥拷贝到 server2 上对应的.ssh/authorized_keys文件中,具体的步骤参考本文前面的“配置公钥认证”部分。

完成以上操作后,我们便可以使用下面的命令在 server1 上免密登录到 server2 上:

ssh username@server1 ssh username@server2

其中 username 填写的是在 server2 上配置过公钥认证的用户的用户名。这样,我们就可以方便地实现在两台服务器之间浏览和传输文件了。