节点间SSH互信配置


确认ssh可以运行
0.1. 修改sshd_config文件:vi /etc/ssh/sshd_config:
将#PasswordAuthentication no的注释去掉,并且将NO修改为YES
将#PermitRootLogin yes的注释去掉,这样root可以通过ssh登录
0.2. 重新启动SSH服务,命令为:/etc/init.d/sshd restart
0.3. 验证SSH服务状态,命令为:/etc/init.d/sshd status

以root@node1为例,node1要访问oracle@node2,方法如下:
1.以root身份登录node1,执行以下命令:
ssh-keygen -t rsa
该命令缺省在~/.ssh/下生成公私密钥:id_rsa(密钥)和id_rsa.pub(公钥)

2.把新生成的id_rsa.pub拷贝到node2的oracle用户的home目录下:
scp ~/.ssh/id_rsa.pub oracle@node2:/home/oracle[[BR]]

3.以oracle身份登录node2
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys (确保此文件的权限正确)
cat id_rsa.pub >> ~/.ssh/known_hosts

4.验证:
以root身份登录node1:
ssh oracle@node2
无需输入yes和密码,完成配置。

至此,root@node1到oracle@node2的ssh互信配置完成。

如果按照上面的步骤仍然不成功,则可能$HOME, $HOME/.ssh or $HOME/.ssh/authorized_keys的权限超过了sshd缺省允许的范围。
笔者遇到的问题即是authorized_keys的权限过大,执行命令:chmod 600 $HOME/.ssh/authorized_keys,问题解决。
具体参考以下步骤:

Typically this is caused by the file permissions on $HOME, $HOME/.ssh or $HOME/.ssh/authorized_keys being more permissive than sshd allows by default.

In this case, it can be solved by executing the following on the server.

$ chmod go-w $HOME $HOME/.ssh
$ chmod 600 $HOME/.ssh/authorized_keys
$ chown whoami $HOME/.ssh/authorized_keys

If this is not possible for some reason, an alternative is to set StrictModes no in sshd_config, however this is not recommended.


### Linux节点间配置SSH无密码互信的最佳实践 在Linux集群环境中,配置SSH无密码互信是一项常见的任务,能够显著提高集群管理效率和自动化脚本执行的便利性。以下是关于如何在Linux节点之间配置SSH无密码互信的思路和方法。 #### 一、基本原理 SSH无密码互信的核心在于使用公钥加密技术。通过将一个节点的公钥添加到另一个节点的`authorized_keys`文件中,目标节点可以验证发起连接的节点身份,而无需每次输入密码[^1]。 #### 二、核心步骤 以下是配置SSH无密码互信的关键步骤: #### 1. 基础配置(所有节点执行) 确保每个节点都已正确安装并配置SSH服务。检查SSH服务是否正在运行,并确认以下配置项已启用: ```bash RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ``` 这些配置通常位于`/etc/ssh/sshd_config`文件中。修改后需要重启SSH服务以使更改生效: ```bash sudo systemctl restart sshd ``` 确保`.ssh`目录和相关文件的权限正确设置: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` #### 2. 公钥生成与分发 在每个节点上生成SSH密钥对(如果尚未生成): ```bash ssh-keygen -t rsa -b 4096 ``` 此命令会在`~/.ssh`目录下生成`id_rsa`(私钥)和`id_rsa.pub`(公钥)文件。 ##### 方式1:使用`ssh-copy-id`(推荐) 这是最简单的方法,适用于单向互信配置: ```bash ssh-copy-id user@target_host ``` 此命令会将当前节点的公钥复制到目标节点的`authorized_keys`文件中,并自动处理权限问题[^2]。 ##### 方式2:手动传输公钥 如果无法使用`ssh-copy-id`,可以通过SCP手动传输公钥: ```bash scp ~/.ssh/id_rsa.pub user@target_host:~/ ``` 然后登录到目标节点并将公钥追加到`authorized_keys`文件中: ```bash cat id_rsa.pub >> ~/.ssh/authorized_keys ``` ##### 方式3:多主机互信(集群场景) 对于多个节点之间的互信,可以先收集所有节点的公钥,再分发到每个节点的`authorized_keys`文件中。例如,使用以下脚本批量处理: ```bash #!/bin/bash for host in node1 node2 node3; do ssh-copy-id user@$host done ``` #### 三、关键配置项 1. **权限控制** 确保`.ssh`目录和`authorized_keys`文件的权限正确设置,否则可能导致SSH连接失败[^3]。 2. **主机名解析** 配置正确的DNS或`/etc/hosts`文件,以便节点之间可以通过主机名进行通信。 3. **非默认端口配置** 如果使用了非标准SSH端口,需在`~/.ssh/config`文件中指定端口号。例如: ```bash Host target_host Port 2222 ``` #### 四、验证与排错 完成配置后,需验证SSH无密码互信是否成功: ```bash ssh user@target_host ``` 如果连接成功且无需输入密码,则配置正确。如果失败,可参考以下常见问题排查: - 检查`sshd_config`文件中的配置是否正确。 - 确认公钥已正确添加到`authorized_keys`文件中。 - 检查`.ssh`目录和`authorized_keys`文件的权限。 #### 五、扩展场景 1. **多用户配置** 如果需要为多个用户配置SSH无密码互信,可以分别为每个用户生成密钥对并分发公钥。 2. **批量配置脚本** 使用Ansible等工具实现自动化配置,减少手动操作的工作量。 3. **安全增强** 考虑禁用密码认证,仅允许公钥认证: ```bash PasswordAuthentication no ``` --- ### 示例代码 以下是一个简单的脚本,用于在多个节点之间配置SSH无密码互信: ```bash #!/bin/bash KEYS_DIR="collected_keys" # 收集所有节点的公钥 mkdir -p $KEYS_DIR for host in node1 node2 node3; do scp user@$host:.ssh/id_rsa.pub $KEYS_DIR/$host.key done # 将所有公钥合并到一个文件中 cat $KEYS_DIR/*.key > all_keys.pub # 分发合并后的公钥到每个节点 for host in node1 node2 node3; do scp all_keys.pub user@$host:~/.ssh/authorized_keys done ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值