FROM centos:7
# 安装openssh-server和必要的工具
RUN yum -y update && \
yum -y install openssh-server openssh-clients passwd && \
yum clean all
# 生成SSH密钥
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
# 设置root密码为"password"(生产环境请使用更安全的方式)
RUN echo "root:password" | chpasswd
# 允许root通过SSH登录(仅用于测试,生产环境不建议)
RUN sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
# 暴露SSH端口
EXPOSE 22
# 启动SSH服务
CMD ["/usr/sbin/sshd", "-D"]
docker build -t centos-ssh .
docker run -d -p 2222:22 --name centos-ssh-container centos-ssh
ssh root@localhost -p 2222
# 密码是"password"
docker run -it --name centos-ssh centos:7 /bin/bash
yum update -y
yum install -y openssh-server openssh-clients passwd
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
echo "root:password" | chpasswd
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
/usr/sbin/sshd -D &
# 按Ctrl+P然后Ctrl+Q
docker commit centos-ssh centos-ssh-image
docker run -d -p 2222:22 --name ssh-server centos-ssh-image /usr/sbin/sshd -D
docker exec
进入容器连接被拒绝:
ps aux | grep sshd
登录失败:
/etc/ssh/sshd_config
中的PermitRootLogin
设置服务无法启动:
/var/log/secure
或/var/log/messages
中的日志/run/sshd
目录存在,如果没有:mkdir /run/sshd