如题所示,本篇攻略将会详细讲解如何在Linux下实现免密码登录。
准备工作
在开始之前,我们需要做以下准备工作:
- 确认目标机器是否已安装所需软件:ssh、ssh-server
- 确认目标机器是否配置了公钥认证安全机制,若未配置则需要先配置。
配置公钥认证
以下将以一台新安装的Ubuntu服务器为例,来演示如何配置公钥认证。
- 在本地机器上打开终端并输入以下命令:
ssh-keygen -t rsa
该命令将会在本地机器上生成一对密钥,分别是私钥和公钥。其中私钥通常放在 ~/.ssh/id_rsa
,公钥则是 ~/.ssh/id_rsa.pub
。
- 在目标机器上创建一个新用户,并为该用户创建一个
.ssh
文件夹:
sudo adduser username
sudo mkdir /home/username/.ssh
sudo chown username:username /home/username/.ssh
- 将本地机器上生成的公钥复制到目标机器上的
.ssh/authorized_keys
文件中:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@your.server.ip.address
在此处将 username
替换为第二步中创建的新用户名, your.server.ip.address
则是指目标服务器的IP地址。运行此命令后,会自动将本地机器上生成的公钥拷贝到目标机器对应的文件中。若拷贝成功,接下来便可以使用该新用户账号进行 SSH 连接了。
- 验证是否配置成功
使用下面的命令测试能否将公钥放入目标主机,如果能够成功登录说明配置成功,我们便可以使用该用户进行 SSH 免密登录:
ssh username@your.server.ip.address
SSH免密码登录
如果上述步骤都已完成,现在我们可以使用下面命令来进行SSH免密码登录:
ssh username@your.server.ip.address
运行该命令之后就能够直接登录到目标机器中了,无需输入密码。
示例说明
下面以两个具体的示例来说明:
示例一
我们经常需要从本地开发机器上登录到服务器进行开发和测试等。假设我们拥有一台名为 server1
的测试服务器,在本地机器上要经常使用SSH登录到该服务器上。
我们可以按照前面的步骤,在本地机器上为新建一个用户 test
,然后在 server1
上为该用户配置公钥认证。最后,在本地机器上,我们就可以通过下面的命令免密登录到 server1
上了:
ssh test@server1
示例二
假设我们拥有两台Ubuntu服务器,分别是 server1
和 server2
。现在,我们希望从 server1
上的某个用户可以通过SSH免密码登录到 server2
上。
我们可以在 server1
上为该用户生成新的公私钥对,并将其公钥拷贝到 server2
上对应的.ssh/authorized_keys
文件中,具体的步骤参考本文前面的“配置公钥认证”部分。
完成以上操作后,我们便可以使用下面的命令在 server1
上免密登录到 server2
上:
ssh username@server1 ssh username@server2
其中 username
填写的是在 server2
上配置过公钥认证的用户的用户名。这样,我们就可以方便地实现在两台服务器之间浏览和传输文件了。