珈蓝冰雨 2024-06-05 16:25 采纳率: 40%
浏览 2

Linux系统ssh互信配置异常

最近在学写shell脚本,准备给各服务器批量做ssh互信。

测试给各服务器root做免密没问题,但给普通用户设置免密就出问题了:私钥创建成功但copy就提示秘钥验证失败??各服务器ssh端口一致用户名密码都一致,这个验证失败着实想不明白。身边没有技术支持,只能来CSDN转转了,期望能解惑,先行谢过啦

脚本:

img

报错关键字:/bin/ssh-copy-id: ERROR: Host key verification failed.

img

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-05 16:25
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的信息,看起来您在尝试为普通用户(例如hadoop)设置SSH免密登录时遇到了问题。错误消息提到Host key verification failed,这通常意味着目标主机的SSH公钥指纹与您的本地主机上存储的指纹不匹配。要解决这个问题,您可以按照以下步骤操作:

    1. 确保所有服务器上的SSH服务已经启动并且监听正确的端口(这里是10022)。检查 /etc/ssh/sshd_config 文件,并确保 Port 行设置为10022。

    2. 首先,手动登录每个目标服务器,确认其SSH公钥指纹是否正确。运行以下命令:

      ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
      

      记录每个服务器返回的指纹。

    3. 在您的本地机器上,找到~/.ssh/known_hosts文件(对于root用户可能是/root/.ssh/known_hosts),并删除与这些服务器相关联的条目。注意,在某些系统中,此文件可能具有严格的权限,您可能需要以root身份进行编辑。

    4. 重新执行您的脚本,当遇到Host key verification failed提示时,选择yes接受新的主机密钥。

    以下是修改后的脚本,添加了一个选项让用户手动接受新的主机密钥:

    #!/bin/bash
    
    # ... 其他部分保持不变 ...
    
    echo "检测到正在为普通用户配置免密登录"
    sleep 3
    
    if [ -f "/home/$user/.ssh/id_rsa" ]; then
        echo "suser用户秘钥已存在"
    else
        echo "创建$user用户秘钥"
        su - $user -c "ssh-keygen -t rsa -b 2048 -D /home/$user/.ssh/id_rsa"
    
        echo "将$user用户公钥分发至指定服务器..."
        sleep 3
    
        for copy2 in $(echo "$HOST" | tr ',' ' '); do
            expect <<- EOF
                spawn su - $user -c "ssh-copy-id -p$port $user@$copy2"
                expect "password:"
                send "$user_pass\r"
                "(yes/no)?" {
                    send "yes\n"
                    exp_continue
                }
                expect "*?assword:*"
                send "$user_pass\r"
                expect eof
            EOF
        done
    fi
    
    exit 0
    

    在这个版本的脚本中,我增加了对目标服务器密码的输入提示,并且在expect块中处理了两次密码提示(第一次是ssh-copy-id的密码,第二次是目标服务器的密码)。这样应该可以绕过Host key verification failed的问题。如果仍然有问题,请检查您的网络环境和防火墙设置。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月5日

悬赏问题

  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!