본문 바로가기

리눅스

[리눅스] 도커 컨테이너 내에서 ssh 서버를 설정하는 방법

728x90

도커 컨테이너 내에서 ssh 서버를 설정하는 방법

Dockerfile 파일 작성

FROM ubuntu:22.04

LABEL website="sangchul.kr"

ARG DEBIAN_FRONTEND=noninteractive
ARG SSH_USER=${SSH_USER:-ubuntu}
ARG SSH_PASSWORD=${SSH_PASSWORD:-ubuntu}

ENV TZ=Asia/Seoul
ENV SSH_USER=${SSH_USER}
ENV SSH_PASSWORD=${SSH_PASSWORD}
ENV PS1A="\[\e[33m\]\u\[\e[m\]\[\e[37m\]@\[\e[m\]\[\e[34m\]\h\[\e[m\]:\[\033[01;31m\]\W\[\e[m\]$ "

RUN echo $TZ > /etc/timezone

RUN apt update \
    && apt upgrade -qq -y \
    && apt install -qq -y openssh-server \
        aptitude sudo ssh vim curl \
        net-tools iputils-ping traceroute netcat telnet dnsutils \
    && mkdir /var/run/sshd \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

USER root

RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
    && sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config \
    && sed -i 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config

RUN mkdir -m 700 ~/.ssh \
    && echo 'PS1=$PS1A' >> ~/.bashrc \
    && echo 'export PS1="\[\e[33m\]\u\[\e[m\]\[\e[37m\]@\[\e[m\]\[\e[34m\]\h\[\e[m\]:\[\033[01;31m\]\W\[\e[m\]$ "' >> ~/.profile \
    && echo "alias ll='ls -alh'" >> ~/.bashrc \
    && echo "root:root" | chpasswd

RUN useradd -c "System Administrator" -m -d /home/$SSH_USER -s /bin/bash $SSH_USER \
    && usermod -aG sudo $SSH_USER \
    && echo 'PS1=$PS1A' >> /home/$SSH_USER/.bashrc \
    && echo 'export PS1="\[\e[33m\]\u\[\e[m\]\[\e[37m\]@\[\e[m\]\[\e[34m\]\h\[\e[m\]:\[\033[01;31m\]\W\[\e[m\]$ "' >> /home/$SSH_USER/.profile \
    && echo "alias ll='ls -alh'" >> /home/$SSH_USER/.bashrc \
    && mkdir -m 700 /home/$SSH_USER/.ssh \
    && chown $SSH_USER.$SSH_USER /home/$SSH_USER/.ssh \
    && echo "$SSH_USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
    && echo "$SSH_USER:$SSH_PASSWORD" | chpasswd

EXPOSE 22

CMD ["/usr/sbin/sshd", "-D"]

이미지 빌드

docker build -t anti1346/ubuntu-sshd:22.04 .
docker build --build-arg SSH_USER=ubuntu --build-arg SSH_PASSWORD=ubuntu -t anti1346/ubuntu-sshd:22.04 .

도커 컨테이너 실행

docker run -d -p 2222:22 --name ssh-server anti1346/ubuntu-sshd:22.04

도커 컨테이너 접속

docker exec -it ssh-server bash

 

참고사이트 : 

- github : https://github.com/anti1346/docker-ubuntu-sshd

 

728x90