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

如何配置SSH实现无任何认证登录?Ubuntu Docker镜像场景

实现无认证SSH登录(Ubuntu Docker镜像)

我明白你想要在Ubuntu Docker镜像里配置完全无认证的SSH——不用输密码也不用密钥验证,直接敲ssh computer@IP_address就能登录,还方便传文件。之前查的类似问题没帮上忙?那我给你一步步来搞定,不过必须先提醒你:这种完全跳过认证的配置极度不安全,只适合本地测试、隔离的Docker环境这种非敏感场景,绝对不能在公网或生产环境用!

1. 先在Docker镜像里装OpenSSH服务

先基于Ubuntu官方镜像来构建,写个Dockerfile:

FROM ubuntu:latest

# 更新包并安装openssh-server,装完清理缓存减小镜像体积
RUN apt-get update && apt-get install -y openssh-server \
    && rm -rf /var/lib/apt/lists/*

# 创建sshd运行需要的目录,不然启动会报错
RUN mkdir /var/run/sshd

2. 修改SSH配置,彻底跳过认证

核心就是改/etc/ssh/sshd_config里的参数,让SSH不做任何身份验证。你可以手动编辑,不过在Dockerfile里用sed命令批量改更方便:

# 调整sshd_config的关键配置
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
    # 关掉密码认证
    && sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config \
    # 关掉公钥认证
    && echo "PubkeyAuthentication no" >> /etc/ssh/sshd_config \
    # 关掉挑战响应式认证(比如验证码那种)
    && echo "ChallengeResponseAuthentication no" >> /etc/ssh/sshd_config \
    # 允许空密码登录
    && echo "PermitEmptyPasswords yes" >> /etc/ssh/sshd_config \
    # 禁用PAM,避免它额外搞认证检查
    && echo "UsePAM no" >> /etc/ssh/sshd_config \
    # 让SSH监听所有IP,不然只能容器内部访问
    && echo "ListenAddress 0.0.0.0" >> /etc/ssh/sshd_config \
    # 关掉DNS反向解析,加快登录速度
    && echo "UseDNS no" >> /etc/ssh/sshd_config

3. 给root用户设置空密码(关键!)

默认Ubuntu镜像的root账户是锁定的,没法直接登录,得解锁并设置空密码:

RUN passwd -d root

如果你想用普通用户的话,就创建一个用户并设置空密码,然后调整PermitRootLogin为no,再加AllowUsers your-user就行,不过Docker里用root更省事。

4. 让容器启动就自动跑SSH服务

在Dockerfile最后加个CMD,让容器启动时后台运行sshd:

CMD ["/usr/sbin/sshd", "-D"]

5. 构建镜像并启动容器

现在执行命令构建镜像,再跑起来:

# 构建镜像,命名为ubuntu-ssh-noauth
docker build -t ubuntu-ssh-noauth .

# 启动容器,把本地的2222端口映射到容器的22端口(避免和本地SSH冲突)
docker run -d -p 2222:22 --name ssh-container ubuntu-ssh-noauth

6. 测试无认证登录

现在直接敲命令就能登录了,不用输任何密码:

# 本地测试登录
ssh root@localhost -p 2222

# 远程机器登录的话,换成容器所在的IP
ssh root@<你的容器IP>

如果是用默认22端口(没冲突的话),就不用加-p 2222。

关于文件传输

既然SSH配置好了,用scp或者sftp传文件也完全不用输密码,比如:

# 把本地文件传到容器里
scp -P 2222 你的本地文件.txt root@localhost:/容器里的目标路径/

# 从容器下载文件到本地
scp -P 2222 root@localhost:/容器里的文件路径/文件.txt ./

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:59:42