Linux配置ssh互信完全方案版

本文介绍如何通过设置SSH密钥实现服务器间的免密码登录,包括配置rsa认证、公钥私钥配对认证,以及密钥的生成与分发过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.以root用户登录,更改ssh配置文件 /etc/ssh/sshd_config,去除以下配置的注释

 RSAAuthentication yes #启用rsa认证(如没有,可忽略)
 PubkeyAuthentication yes #启用公钥私钥配对认证方式
 查看验证秘钥路径

AuthorizedKeysFile .ssh/master_authkeys
#公钥文件路径(保证路径正确,此处的‘’/master_authkeys ‘’的变量名根据不同配置而定,之后创建的文件要保证与配置中同名)

2 重启ssh服务 systemctl restart sshd

3 在每个节点上创建 RSA密钥和公钥,确保.ssh文件夹创建在家目录下

 ssh-keygen -t rsa(不管提示一路回车)

如果没有~/.ssh/文件夹,那备选方案如下。先创建文件夹再生成秘钥:

 mkdir ~/.ssh

 chmod 700 ~/.ssh

 cd ~/.ssh

 ssh-keygen -t rsa

4.1 将生成的公钥发送到其他主机,node1——>node2, node1–node3, node2–>node3

ssh-copy-id -i ~/.ssh/id_rsa.pub node2

验证是否成功,在各节点上运行,如果无需密码则成功

ssh node1 date
ssh node2 date
ssh node3 date

4.2(如果ssh-copy-id命令不可用,那么备选方案如下) 在node1上执行以下命令

cat ~/.ssh/id_rsa.pub >> ~/.ssh/master_authkeys

ssh node2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/master_authkeys

ssh node3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/master_authkeys

将node1上的文件拷贝至另外节点即可

scp ~/.ssh/master_authkeys  node2:~/.ssh/

scp ~/.ssh/master_authkeys  node3:~/.ssh/

验证是否成功,在各节点上运行,如果无需密码则成功

ssh node1 date
ssh node2 date
ssh node3 date
<think>我们被要求配置SSH免密登录,并且以root用户身份登录。但是,根据引用[1],生产环境中不建议使用root账号免密登录,因为存在安全风险。然而,如果用户坚持要这样做,我们可以提供步骤。 注意:以下步骤需要谨慎操作,因为允许root用户通过SSH免密登录会降低系统的安全性。 步骤: 1. 在客户端生成SSH密钥对(如果已有,可跳过) 2. 将客户端的公钥复制到目标服务器的root用户的authorized_keys文件中 3. 确保目标服务器上SSH服务配置允许root用户登录(默认可能不允许)以及允许公钥认证 4. 测试免密登录 详细步骤: 1. 在客户端生成SSH密钥对(在客户端机器上操作,以root用户或能切换到root的用户身份): 如果还没有密钥对,可以使用以下命令生成: ``` ssh-keygen -t rsa ``` 通常,按回车接受默认设置(密钥保存在/root/.ssh/id_rsa,不设置密码),这样在登录时就不需要输入密钥密码。 2. 将公钥复制到目标服务器(这里目标服务器也是本机?还是另一台?假设目标服务器IP为192.168.31.142): 使用`ssh-copy-id`命令: ``` ssh-copy-id root@192.168.31.142 ``` 然后输入目标服务器root用户的密码,这样公钥就会被复制到目标服务器的/root/.ssh/authorized_keys文件中。 如果没有ssh-copy-id,也可以手动操作: ``` cat ~/.ssh/id_rsa.pub | ssh root@192.168.31.142 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" ``` 3. 配置目标服务器的SSH服务以允许root登录(在目标服务器上操作): 编辑SSH服务配置文件:`/etc/ssh/sshd_config` 确保以下配置: ``` PermitRootLogin yes PubkeyAuthentication yes PasswordAuthentication no # 可选,禁用密码登录以提高安全性(但确保免密登录成功后再禁用,否则可能锁死) ``` 然后重启SSH服务: ``` systemctl restart sshd ``` 注意:如果目标服务器是云服务器,确保在重启sshd之前,已经通过其他方式(例如控制台)可以访问,以免配置错误导致无法登录。 4. 测试免密登录: 在客户端执行: ``` ssh root@192.168.31.142 ``` 应该可以直接登录,不需要输入密码。 安全提醒: - 允许root用户远程登录存在安全风险,尤其是免密登录。如果私钥泄露,攻击者可以直接登录系统。 - 建议使用普通用户登录,然后通过sudo提权。如果必须使用root,请确保私钥的安全。 根据引用[1]和[2]的建议,我们通常创建一个专用用户进行免密登录,并赋予sudo权限(无需密码)来执行管理员命令。这样即使该用户被泄露,也可以通过sudoers文件限制可执行的命令。 但是,用户明确要求以root用户身份免密登录,所以上述步骤是针对root用户的。 如果用户是在同一台机器上配置本机免密登录自己(例如在脚本中使用),那么目标服务器就是本机,步骤相同,只需将IP改为127.0.0.1或主机名。 注意:如果目标服务器上root用户的家目录下没有.ssh目录,或者authorized_keys文件的权限不对(应该为600),可能会导致失败。所以确保: - /root/.ssh 目录权限为700 - /root/.ssh/authorized_keys 文件权限为600 引用说明: 引用[1]提到创建专用用户并赋予root权限的方法,但用户要求使用root,所以我们没有采用。 引用[2]介绍了SSH互信的基本步骤。 引用[3]展示了使用ssh-copy-id上传公钥的方法。 因此,我们按照用户要求给出了root用户的免密登录配置步骤。 相关问题: 1. 如何为普通用户配置SSH免密登录? 2. 配置SSH免密登录后仍然需要输入密码,如何排查? 3. 如何禁用SSH的密码登录以提高安全性?</think>### Linux 配置SSH免密登录(以root用户身份) #### 步骤说明 1. **生成SSH密钥对(客户端)** 在需要登录的客户端机器上执行: ```bash ssh-keygen -t rsa -b 4096 ``` 连续按回车接受默认设置(密钥保存路径为`$HOME/.ssh/id_rsa`,不设置密码短语),生成密钥对。 2. **复制公钥到目标服务器** 使用以下命令将公钥上传到目标服务器(替换`目标IP`): ```bash ssh-copy-id root@目标IP ``` 输入目标服务器的root密码后,公钥会自动添加到`/root/.ssh/authorized_keys`文件中[^3]。 3. **修改SSH服务配置(目标服务器)** 在目标服务器上编辑配置文件: ```bash vi /etc/ssh/sshd_config ``` 确保以下配置生效: ```ini PermitRootLogin yes # 允许root登录 PubkeyAuthentication yes # 启用密钥认证 PasswordAuthentication no # 关闭密码认证(可选,增强安全) ``` 保存后重启SSH服务: ```bash systemctl restart sshd ``` 4. **测试免密登录** 从客户端执行: ```bash ssh root@目标IP ``` 成功登录则无需输入密码[^2]。 #### 关键权限检查 - 目标服务器文件权限要求: ```bash chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys ``` - 客户端私钥权限: ```bash chmod 600 ~/.ssh/id_rsa ``` #### 安全风险提示 1. **root用户风险** 直接使用root免密登录存在高危安全风险(如私钥泄露导致系统完全失控)[^1]。 2. **安全替代方案** ```bash # 创建专用用户 useradd -m -s /bin/bash adminuser passwd adminuser # 设置密码 # 赋予sudo权限(无需密码) echo "adminuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # 为该用户配置SSH免密登录 ssh-copy-id adminuser@目标IP ``` > ⚠️ **生产环境强烈建议**:使用普通用户免密登录后通过`sudo`提权,避免直接暴露root账户[^1]。 --- ### 相关问题 1. 如何排查SSH免密登录失败的问题? 2. 禁用SSH密码登录后如何确保不会锁死服务器? 3. SSH密钥认证相比密码认证有哪些安全优势? [^1]: Linux配置ssh免密。配置ssh免密登录可以直接使用root用户,但是在生产环境中,不建议使用root账号免密登录。 [^2]: Linux 配置SSH免密登录(SSH互信)。只需三步:服务端配置允许密钥认证,客户端生成密钥,上传公钥到服务端。 [^3]: linux 配置ssh免密登录。公钥上传到目标服务器后,需测试免密登录是否生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值