插件窝 干货文章 docker centos怎么安装ssh

docker centos怎么安装ssh

SSH CentOS 容器 sshd 731    来源:    2025-04-28

在Docker CentOS容器中安装SSH服务

方法一:通过Dockerfile创建带SSH的CentOS镜像

  1. 创建一个Dockerfile文件:
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"]
  1. 构建镜像:
docker build -t centos-ssh .
  1. 运行容器:
docker run -d -p 2222:22 --name centos-ssh-container centos-ssh
  1. 连接SSH:
ssh root@localhost -p 2222
# 密码是"password"

方法二:在运行的CentOS容器中手动安装SSH

  1. 启动CentOS容器:
docker run -it --name centos-ssh centos:7 /bin/bash
  1. 在容器内执行:
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 &
  1. 退出容器但不停止它:
# 按Ctrl+P然后Ctrl+Q
  1. 提交容器为新镜像:
docker commit centos-ssh centos-ssh-image
  1. 运行新镜像并映射端口:
docker run -d -p 2222:22 --name ssh-server centos-ssh-image /usr/sbin/sshd -D

安全建议

  1. 不要使用简单密码,考虑使用SSH密钥认证
  2. 生产环境中不建议允许root直接登录
  3. 考虑使用更安全的替代方案,如:
    • 使用docker exec进入容器
    • 使用Kubernetes exec
    • 使用nsenter工具

常见问题解决

  1. 连接被拒绝

    • 确保sshd服务正在运行:ps aux | grep sshd
    • 检查端口是否正确映射
  2. 登录失败

    • 确认密码正确
    • 检查/etc/ssh/sshd_config中的PermitRootLogin设置
  3. 服务无法启动

    • 检查/var/log/secure/var/log/messages中的日志
    • 确保/run/sshd目录存在,如果没有:mkdir /run/sshd