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

连接Docker容器暴露的SSH端口时提示权限被拒绝如何解决

问题解答

1 故障原因排查

你当前的权限报错不是SSH密钥问题,核心原因有两个:

  • 容器的root账户完全独立于宿主机,输入宿主机的root密码本身就是错误的,绝大部分自定义镜像默认会锁死root密码,不允许空密码/未知密码登录
  • 你使用的SSH命令格式错误,macOS原生ssh客户端不支持ip:端口的写法,指定端口需要加-p参数,正确的基础命令为ssh root@127.0.0.1 -p 1312

2 密码登录解决方案

如果要使用密码登录,按以下步骤操作:

  1. 以交互模式进入运行中的容器:
    docker exec -it cpp_dep bash
  2. 手动设置root账户密码,执行命令后输入两次你自定义的密码即可:
    passwd root
  3. 确认容器SSH配置允许root密码登录,编辑/etc/ssh/sshd_config文件,确保存在以下配置:
PermitRootLogin yes
PasswordAuthentication yes
  1. 重启容器内的SSH服务生效:
    service ssh restart
    之后使用你刚才设置的root密码即可完成SSH登录,CLion中配置远程工具链时直接使用该密码即可。

3 免密码登录配置方案

推荐使用SSH密钥方式实现免密登录,安全性更高,操作步骤如下:

  1. 如果你本地macOS没有生成过SSH密钥,先执行本地命令生成密钥,一路回车使用默认配置即可:
    ssh-keygen -t ed25519
  2. 进入容器创建SSH配置目录并设置权限:
mkdir -p /root/.ssh
chmod 700 /root/.ssh
  1. 本地mac终端执行命令,将公钥写入容器的授权文件:
    cat ~/.ssh/id_ed25519.pub | ssh root@127.0.0.1 -p 1312 'cat >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys'
    配置完成后后续SSH连接无需输入密码,CLion中选择OpenSSH密钥认证即可自动读取本地配置完成连接。

4 镜像优化建议

你可以将上述配置写入cpp_dep镜像的Dockerfile中,避免每次启动容器都重复配置,示例配置片段如下:

# 安装SSH服务(基于Debian/Ubuntu系镜像,其他发行版对应修改包管理命令即可)
RUN apt update && apt install -y openssh-server
# 设置root密码(自行替换为你需要的密码)
RUN echo 'root:123456' | chpasswd
# 配置SSH允许root登录
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
    && sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
# 启动SSH服务
CMD ["/usr/sbin/sshd", "-D"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:24:08