Administrator
发布于 2025-03-11 / 4 阅读
0

Linux 系统间配置 SSH 互信免密登录

#AI

在两台 Linux 系统间配置 SSH 互信免密登录,可按以下步骤操作:

环境准备

假定有两台 Linux 主机,分别为 host1host2,需要在它们之间配置 SSH 互信。

操作步骤

1. 生成 SSH 密钥对

host1host2 上分别执行以下命令,生成 SSH 密钥对:

ssh-keygen -t rsa

按提示操作,连续三次回车,默认在 ~/.ssh 目录下生成 id_rsa(私钥)和 id_rsa.pub(公钥)文件。

2. 复制公钥到对方主机

host1 上执行以下命令,将 host1 的公钥复制到 host2

ssh-copy-id user@host2

这里的 userhost2 上的用户名,host2host2 的 IP 地址或主机名。执行该命令后,会提示输入 host2user 用户密码,输入正确密码后,host1 的公钥就会被复制到 host2~/.ssh/authorized_keys 文件中。

同样,在 host2 上执行以下命令,将 host2 的公钥复制到 host1

ssh-copy-id user@host1

其中 userhost1 上的用户名,host1host1 的 IP 地址或主机名。

3. 验证互信配置

host1 上执行以下命令,尝试免密登录 host2

ssh user@host2

若无需输入密码就可登录到 host2,表明 host1host2 的免密登录配置成功。

同样,在 host2 上执行以下命令,尝试免密登录 host1

ssh user@host1

若无需输入密码就可登录到 host1,表明 host2host1 的免密登录配置成功。

注意事项

  • 确保两台主机的 SSH 服务都已启动,可使用 systemctl status sshd 命令查看 SSH 服务状态,若未启动,可使用 systemctl start sshd 命令启动。
  • 确保两台主机的防火墙允许 SSH 连接,默认情况下 SSH 使用 22 端口,可使用 firewall-cmd --zone=public --add-port=22/tcp --permanent 命令开放 22 端口,然后使用 firewall-cmd --reload 命令重新加载防火墙规则。

在配置 SSH 互信免密登录时,需要确保 SSH 配置文件(通常为 /etc/ssh/sshd_config)开启以下必要配置项,以下为你详细介绍:

必要配置项说明

1. PubkeyAuthentication

该配置项用于开启基于公钥的认证方式,只有开启此项,SSH 才能使用公钥进行身份验证。

PubkeyAuthentication yes

2. AuthorizedKeysFile

此配置项指定了存储用户授权公钥的文件路径,默认值为 .ssh/authorized_keys,表示公钥存储在用户主目录下的 .ssh 文件夹中的 authorized_keys 文件里。

AuthorizedKeysFile      .ssh/authorized_keys

3. PasswordAuthentication

虽然在配置免密登录时,通常不需要密码认证,但在调试或者特殊情况下可能需要使用密码登录,因此可以根据实际情况决定是否开启此项。如果要严格使用公钥认证,可以将其设置为 no

PasswordAuthentication no

4. PermitRootLogin

该配置项决定是否允许 root 用户通过 SSH 登录。出于安全考虑,建议将其设置为 no,禁止 root 用户直接通过 SSH 登录。如果需要使用 root 权限,可以先以普通用户身份登录,再使用 sudo 命令提权。

PermitRootLogin no

配置文件修改步骤

  1. 备份配置文件:在修改配置文件之前,建议先备份原文件,以防修改过程中出现错误导致 SSH 服务无法正常使用。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  1. 编辑配置文件:使用文本编辑器(如 vimnano)打开配置文件进行修改。
sudo vim /etc/ssh/sshd_config
  1. 修改配置项:找到上述配置项并修改其值,去掉前面的注释符号(#),如果配置项不存在,可以在文件中添加相应的行。

  2. 保存并退出:在 vim 编辑器中,按下 Esc 键,输入 :wq 保存并退出。

  3. 重启 SSH 服务:修改配置文件后,需要重启 SSH 服务使配置生效。

sudo systemctl restart sshd

注意事项

  • 修改配置文件时,要确保语法正确,否则可能导致 SSH 服务无法启动。
  • 配置修改完成后,建议在本地测试 SSH 连接,确保配置生效且可以正常登录。
  • 如果使用防火墙,需要确保 SSH 端口(默认为 22)是开放的。