准备工作
在Dockerfile所在目录下,新建两个文件
touch run.sh
touch authorized_keys
run.sh
#!/bin/bash
/usr/sbin/sshd -D
authorized_keys
把你的公钥复制到这文件里,一般是id_rsa.pub文件,
或者你想办法把文件弄过来改成这个名字一样可以
Dockerfile
FROM [你需要启动sshd服务的镜像]
RUN yum install -y openssh-server \
&& yum clean all \
# 生成密钥文件
&& ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key \
&& ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key \
&& ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
# 配置免密和自启动脚本
ADD authorized_keys /.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh \
# 似乎ADD命令没法添加到用户根目录,所以需要移动下
&& mv /.ssh ~/;
# 开放22端口
EXPOSE 22
# 设置脚本自启动
CMD ["/run.sh"]
创建镜像文件
dockers built -t [你算便取个标签名] .
启动容器
# 这里创建端口映射,访问主机的映射端口 就可以访问到容器的22端口
# 也就是说连接容器直接使用 ssh -l root [主机地址] -p [映射端口]就可以了
docker run -d -p [你想要映射的端口]:22 [你刚给镜像取的标签名]
在vscode 中连容器配置文件这么填
Host [给你的容器取个名字]
HostName [容器所在主机ip]
Port [映射端口]
User root
异常处理
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
如果遇到上面异常,执行下面的命令即可
ssh-keygen -R [你容器所在主机ip]:[映射端口]