Ubuntu 20.04 SSHサーバをDockerで起動する
使用するファイル
C:\ │ docker-compose.yml │ ├─home\ └─ubuntu\ Dockerfile
docker-compose.yml
version: '3' services: app: build: context: ./ubuntu/ dockerfile: ./Dockerfile ports: - '2222:22' tty: true container_name: ubuntu20.04 volumes: - ./home:/home
Dockerfile
FROM ubuntu:20.04 RUN apt update RUN apt install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:password' | chpasswd RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile EXPOSE 22 ENTRYPOINT [ "/usr/sbin/sshd", "-D" ]
ssh接続の確認
ssh接続はUbuntuの22番ポートにポートフォワーディングしている2222番ポートを指定します。今回ssh接続のパスワードはpasswordとしています。
ssh -p 2222 root@localhost
コンテナを作り直してssh接続する場合
コンテナを作り直すとssh接続が失敗します。
PS C:\docker\ubuntu20_04> ssh -p 2222 root@localhost @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:*********************************************************. Please contact your system administrator. Add correct host key in C:\\Users\\<User name>/.ssh/known_hosts to get rid of this message. Offending ECDSA key in C:\\Users\\<User name>/.ssh/known_hosts:2 ECDSA host key for [localhost]:2222 has changed and you have requested strict checking. Host key verification failed.
SSHでは初回接続時に接続先ホストの公開鍵を保存しておき、次回接続時にホスト鍵を比較して前回と同じホストに接続したかを確認するような仕組みになっています。
「SSHホスト鍵が変わってるよ!」と怒られたときの対処 - Qiita
known_hostsファイルからssh鍵を削除する事でssh接続が行えました。
$ ssh-keygen -R '[localhost]:2222'