You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Hosted Chef Server引导节点时遇端口22连接拒绝错误求助

解决Hosted Chef Server节点引导时的SSH连接拒绝错误

你遇到的这个错误核心是本地机器无法通过SSH 22端口连接到目标节点xxx.xxx.xxx.xxx,这是knife引导节点时最常见的问题之一,本质和knife本身配置关系不大,主要是SSH连通性层面的问题。下面是一步步的排查和解决步骤:

  • 先做最基础的手动SSH测试:先抛开knife工具,直接在本地终端执行ssh shivam@xxx.xxx.xxx.xxx,输入密码尝试登录。如果这一步都失败,那问题肯定出在SSH服务或网络上,优先解决这个再回头用knife。
  • 检查目标节点的SSH服务状态:在目标节点本地执行命令,确认SSH服务是否正常运行:
    # 针对systemd架构的系统(CentOS 7+/Ubuntu 16.04+)
    sudo systemctl status sshd
    # 针对旧版sysvinit架构的系统
    sudo service ssh status
    
    如果服务未启动,先启动并设置开机自启:
    sudo systemctl start sshd
    sudo systemctl enable sshd
    
  • 检查目标节点的防火墙规则:默认防火墙大概率会拦截22端口,根据系统类型执行对应命令开放端口:
    • Ubuntu/Debian(使用ufw防火墙):
      sudo ufw allow 22/tcp
      sudo ufw reload
      
    • CentOS/RHEL(使用firewalld防火墙):
      sudo firewall-cmd --add-port=22/tcp --permanent
      sudo firewall-cmd --reload
      
  • 确认目标节点的SSH端口是否为默认22:有些环境会修改SSH默认端口,你可以在目标节点查看/etc/ssh/sshd_config文件中的Port配置项。如果端口不是22,需要在knife bootstrap命令中添加--ssh-port <自定义端口>参数,比如:
    knife bootstrap xxx.xxx.xxx.xxx --ssh-user shivam --ssh-password '******' --sudo --use-sudo-password --node-name chefNode1 --run-list 'recipe[learn_chef_httpd1]' --ssh-port 2222
    
  • 验证shivam用户的权限:确保该用户在目标节点上存在,并且拥有SSH登录权限和sudo权限。登录目标节点后执行sudo whoami,如果能返回root说明sudo权限正常;如果提示需要密码,你命令里的--use-sudo-password参数已经正确适配了这个场景。
  • 排查网络连通性:在本地执行ping xxx.xxx.xxx.xxx,如果ping不通,说明你的本地机器和目标节点之间存在网络隔离(比如不在同一网段、路由限制、云服务器安全组未开放22端口),需要先解决网络可达性问题。

完成以上步骤后,重新执行你的knife bootstrap命令,应该就能正常完成节点引导了。

内容的提问来源于stack exchange,提问作者gshivam63

火山引擎 最新活动