如何配置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
相关产品推荐
相关产品推荐

