乐闻世界logo
搜索文章和话题

How do you set up SSH public key authentication between two Linux servers?

1 个月前提问
1 个月前修改
浏览次数7

1个答案

1

在两个Linux服务器之间设置SSH公钥身份验证主要包括以下几个步骤:

1. 检查SSH服务

首先,确保两台服务器都安装了SSH服务。可以使用以下命令来检查SSH服务是否正在运行:

bash
sudo systemctl status ssh

如果服务没有运行,可以使用以下命令启动它:

bash
sudo systemctl start ssh

2. 生成SSH密钥对

在源服务器上,使用ssh-keygen命令生成一对新的SSH密钥(一个公钥和一个私钥)。运行:

bash
ssh-keygen -t rsa -b 4096

当系统提示你输入文件位置时,可以按回车键接受默认位置(通常是~/.ssh/id_rsa)。系统还会询问你是否要设置密码短语,这是可选的。

3. 将公钥复制到目标服务器

使用ssh-copy-id命令将公钥复制到目标服务器的~/.ssh/authorized_keys文件中。你需要提供目标服务器的用户名和IP地址:

bash
ssh-copy-id username@target-server-ip

这个命令会要求你输入目标服务器的用户密码。

4. 测试SSH公钥认证

现在可以尝试使用SSH公钥认证来连接到目标服务器了。使用以下命令:

bash
ssh username@target-server-ip

如果一切设置正确,这时候应该不需要输入密码就能登录到目标服务器。

5. (可选)更严格的安全设置

为了增强安全性,可以编辑源服务器和目标服务器上的/etc/ssh/sshd_config文件,确保以下设置被启用:

  • PasswordAuthentication no - 禁用密码认证
  • PermitRootLogin no - 禁止root用户登录
  • PubkeyAuthentication yes - 启用公钥认证

修改后,不要忘记重启SSH服务来使改动生效:

bash
sudo systemctl restart ssh

实际例子

在我之前的工作中,我们需要经常从开发服务器(DevServer)自动部署代码到生产服务器(ProdServer)。我们通过设置SSH公钥认证,使得我们的部署脚本可以无需人工干预地从DevServer安全地连接到ProdServer并执行必要的部署任务。这不仅提升了部署的效率,也增强了系统的安全性。

2024年8月14日 13:19 回复

你的答案