You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程通过SSH连接Docker容器遇权限拒绝问题求助

排查Docker容器SSH本地连接权限拒绝问题

以下是针对性的排查步骤,按顺序逐一验证:

  • 修正SSH核心配置项
    你提到设置的Allowroot: yes是拼写错误,正确控制root登录的配置项为PermitRootLogin yes,同时必须开启密码验证:PasswordAuthentication yes。修改后重启容器内的sshd服务:

    docker exec <container_name> service ssh restart
    

    可进入容器验证配置是否生效:

    docker exec <container_name> grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config
    
  • 确认端口映射的绑定范围
    检查Docker端口映射是否仅绑定到远程机器的本地回环地址:

    docker port <container_name> 22
    

    正常输出应为0.0.0.0:2200或:::2200,如果显示127.0.0.1:2200,说明仅允许远程机器本地访问,需重新启动容器并指定绑定所有地址:

    docker run -d -p 0.0.0.0:2200:22 <your_image>
    
  • 检查远程机器的防火墙/安全组规则
    确保远程机器的防火墙允许2200端口的入站流量:

    • 若使用ufw:
      sudo ufw allow 2200/tcp
      sudo ufw reload
      
    • 若使用iptables:
      sudo iptables -A INPUT -p tcp --dport 2200 -j ACCEPT
      sudo iptables-save
      

    若是云服务器,需额外检查云平台的安全组规则,确保2200端口对本地机器IP开放。

  • 测试本地到远程的网络连通性
    先验证本地能ping通远程机器:

    ping 192.168.1.33
    

    再测试2200端口是否可达:

    nc -zv 192.168.1.33 2200
    

    若端口不通,说明网络层面被拦截,回到防火墙/安全组排查;若端口通,继续下一步。

  • 查看SSH认证日志定位具体原因
    查看容器内的SSH认证日志:

    docker exec <container_name> cat /var/log/auth.log
    

    若容器内无日志文件,可查看远程机器的系统日志:

    sudo tail -f /var/log/auth.log
    

    日志会明确显示拒绝原因,比如Failed password for root from ...(密码错误)、Connection closed by ... [preauth](认证方式不匹配)等。

  • 排查SELinux/AppArmor限制
    临时关闭远程机器的SELinux(若启用):

    sudo setenforce 0
    

    或临时关闭AppArmor:

    sudo systemctl stop apparmor
    

    重试连接,若能连通则说明是安全模块限制,需调整对应规则。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:35:22