docker中ssh服务无法登录
本文涉及到ssh的登录验证问题的解决,具体参见文章。
服务搭建
docker镜像
密码如果比较简单,会有提示。
FROM centos
RUN yum -y update && yum -y install openssh-server openssh-clients passwd bash vim sudo \
&& yum clean all
ADD ./start.sh /start.sh
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
ADD ./start.sh /start.sh
#RUN chmod 755 /start.sh
RUN ./start.sh gpadmin changeme
CMD ["/usr/sbin/sshd", "-D"]
导入的脚本start.sh
#!/bin/bash
__create_user() {
USER=${1:-user}
useradd -m ${USER}
SSH_USERPASS=${2:-password}
echo -e "$SSH_USERPASS\n$SSH_USERPASS" | (passwd ${USER})
echo user: ${USER} password: $SSH_USERPASS
echo "${USER} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${USER}
}
# Call all functions
__create_user $1 $2
启动
docker build -t gpsshd:0.2 .
docker tag gpsshd:0.2 10.131.9.12:5000/scc/gpsshd:0.2
docker push 10.131.9.12:5000/scc/gpsshd:0.2
docker run -d --rm -p 22022:22 gpsshd:0.2
# 需要进到容器内,删除 /run/nologin 或者
# 修改 /etc/pam.d/sshd 中,注释掉# nologin.so
ssh -p 22022 gpadmin@127.0.0.1
故按以下修改,即可。
RUN ./start.sh gpadmin changeme && rm /run/nologin -f