SSH互信配置过程

无意间看到这篇文章,觉得日后可能会用得上,因此收藏起来,同时也希望能对小伙伴有所帮助

 

背景:前两天一套oracle RAC集群出问题,需要重新建库,dbca建库过程提示无法创建数据库,经排查原因为ssh互信配置失效,需重新配置。

配置过程如下:

1.在两台机器上生成认证文件,这里有个细节,就是ssh互信的认证文件,需要放在用户的home目录下的.ssh目录中,因此我们要首先建立这个目录,并且保证这个目录的权限是755

一节点操作:

 

[oracle@mysql01 ~]$ mkdir .ssh
[oracle@mysql01 ~]$ chmod 755 .ssh
[oracle@mysql01 ~]$ /usr/bin/ssh-keygen -t rsa
[oracle@mysql01 ~]$ /usr/bin/ssh-keygen -t dsa1234

二节点做同样的操作:

 

[oracle@mysql02 ~]$ mkdir .ssh
[oracle@mysql02 ~]$ chmod 755 .ssh
[oracle@mysql02 ~]$ /usr/bin/ssh-keygen -t rsa
[oracle@mysql02 ~]$ /usr/bin/ssh-keygen -t dsa1234

2.将所有的key文件汇总到一个总的认证文件中:

 

[oracle@mysql01 ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[oracle@mysql01 ~]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
[oracle@mysql01 ~]$ ssh oracle@mysql02 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[oracle@mysql01 ~]$ ssh oracle@mysql02 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys1234

3.经过1,2两步,目前mysql01上存在一份完整的认证key文件,这时候,把它拷到mysql02主机的对应目录下:

 

[oracle@mysql01 ~]$ scp ~/.ssh/authorized_keys mysql02:~/.ssh/1

配置完成!

========================================================

上面的操作太复杂,而且按照上面的方法配置三个及以上的服务器互信之后,实际上是有问题的。 
既简单又有效的配置方法如下:

例如在四台服务器server1,server2,server3,server4上为hadoop用户配置互信。

第一步:登录hadoop用户,执行如下命令生成公钥:

[hadoop@server1 ~]$ ssh-keygen -t rsa   #下面一直按回车就好1

第二步:用ssh-copy-id 把公钥复制到各个主机上(包括自己):

 

[hadoop@server1 ~]$ ssh-copy-id -i  .ssh/id_rsa.pub hadoop@server1
[hadoop@server1 ~]$ ssh-copy-id -i  .ssh/id_rsa.pub hadoop@server2
[hadoop@server1 ~]$ ssh-copy-id -i  .ssh/id_rsa.pub hadoop@server3
[hadoop@server1 ~]$ ssh-copy-id -i  .ssh/id_rsa.pub hadoop@server41234

第三步:在其他server上执行上面两步的命令。

至此,ssh互信配置完成。
 

<think>嗯,用户遇到了配置SSH互信后仍然需要输入密码的问题。从引用内容来看,这确实是SSH配置中常见的坑,尤其权限设置和PAM策略容易被忽略。用户可能正在管理多台Ubuntu服务器,需要批量操作或者搭建集群环境,这类问题会严重影响工作效率。 用户提供的三个引用很有价值:引用[1]指出目录权限问题,引用[2]展示完整配置流程但可能遗漏细节,引用[3]则揭示非root用户的系统级策略限制。需要把这些点系统化整合。 核心解决方向其实很清晰:先确认权限(用户主目录/.ssh/authorized_keys),再检查SELinux/PAM策略,最后验证密钥文件有效性。特别要注意用户是用su切换还是直接登录的,引用[1]强调必须原始用户操作权限修改,这点容易被忽视。 考虑到用户是技术人员,回复需要: 第一,给出可操作的检查清单,比如权限数字700和600必须精确 第二,解释原理帮助理解,比如为什么home目录权限过高会导致SSH拒绝 第三,补充引用没提到的点,比如ssh -v调试和authorized_keys文件格式 用户应该会需要立即执行的命令,所以每条解决方案都配上具体命令示例。另外ta可能遭遇同场景(root/普通用户),解决方案要区分说明。最后主动提出延伸帮助很必要,这类问题往往需要具体日志分析。 </think>以下是配置 SSH 互信后仍需要密码的完整解决方案,综合引用内容并补充关键细节: --- ### **一、权限问题(最常见原因)** 1. **修复目录权限**(**务必在目标用户下操作**,可用 `su` 切换后执行): ```bash chmod 700 ~/.ssh # 关键! chmod 700 $HOME # 用户主目录权限(易忽略!见引用[1]的例子) chmod 600 ~/.ssh/authorized_keys # 密钥文件权限 ``` **原理**:SSH 严格要求目录权限为 `700`(仅用户可读写),密钥文件为 `600`,否则直接拒绝认证[^1]。 2. **验证路径所有权**: ```bash ls -ld ~/ ~/.ssh ~/.ssh/authorized_keys ``` **输出要求**:所有路径的**所属用户**必须与登录用户一致(例如 `ubuntu:ubuntu`),否则用 `chown` 修复。 --- ### **二、配置问题** 1. **检查密钥是否正确写入**: ```bash cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys # 追加公钥到授权文件 ``` **注意**:避免手动复制粘贴可能引入换行符错误。 2. **确认服务端配置**(`/etc/ssh/sshd_config`): ```bash PubkeyAuthentication yes # 启用密钥认证 AuthorizedKeysFile .ssh/authorized_keys # 密钥路径正确 PasswordAuthentication no # 可选关闭密码登录(测试后启用) ``` 修改后重启 SSH:`sudo systemctl restart sshd` --- ### **三、扩展排查(其他常见原因)** 1. **SELinux 干扰**(CentOS/RHEL): ```bash sudo restorecon -Rv ~/.ssh # 修复安全上下文 ``` 2. **PAM 策略限制**(非 root 用户): - 检查 `/etc/pam.d/sshd` 和 `/etc/pam.d/system-auth` - **注释或修改**包含 `pam_succeed_if.so uid >= 1000` 的行(见引用[3]) 3. **文件权限递归问题**: ```bash chmod g-w,o-w $HOME # 确保主目录其他用户无写权限 ``` --- ### **四、调试命令** - **客户端调试**: ```bash ssh -vvv user@host # 查看详细的认证过程 ``` 关注 `Authentication refused` 或 `Permission denied` 错误线索。 - **服务端日志**: ```bash sudo tail -f /var/log/auth.log # Ubuntu/Debian sudo tail -f /var/log/secure # CentOS/RHEL ``` --- ### **解决方案总结** | **步骤** | **操作命令/检查点** | **关键点说明** | |--------------------|----------------------------------------|----------------------------------| | 1. 主目录权限 | `chmod 700 $HOME` | 用户主目录必须严格 700 | | 2. .ssh 权限 | `chmod 700 ~/.ssh` | 仅用户可访问 | | 3. 密钥文件权限 | `chmod 600 ~/.ssh/authorized_keys` | 禁止其他用户读取 | | 4. 文件所有权 | `chown -R user:user ~/.ssh` | 用户必须拥有所有权 | | 5. 服务端配置 | 检查 `PubkeyAuthentication yes` | 确保密钥认证已启用 | | 6. PAM 策略 | 注释 `pam_succeed_if.so` 限制策略 | 解决非 root 用户问题[^3] | > **重要提示**:所有权限修改必须**直接以目标用户登录操作**(非 `sudo` 或 `su` 切换),否则可能无效[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值