😊
SSHだけのコンテナ
はじめに
windows11 pro, sshd, docker desktop, wsl, ubuntu が入っています。
もう一台の windows11 home から SSH でコンテナに接続してみる。
コンテナ作成
dockerfile
最低限動く状態でです。最近の ubuntu は、標準で ubuntu というユーザが存在しているようなので、それを使います。
dockerfile
FROM ubuntu:24.04
RUN apt-get update && \
apt-get install -y openssh-server
RUN mkdir -p /run/sshd && \
mkdir -p /home/ubuntu/.ssh
RUN cat <<'END' > /home/ubuntu/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJdCWD/hDPXXAZXJ6v1/lv/47dHauxdoXUgHQYocA6tB yukip@i5-10400
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM6uTTorSMRo4pxaFZLjXkjdJvSwc94oeW4pjdzkoe4O yukip@i5-14400
END
#RUN echo "PubkeyAuthentication yes" > /etc/ssh/sshd_config.d/99-custom.conf
#RUN chmod 700 /home/ubuntu/.ssh && \
# chmod 600 /home/ubuntu/.ssh/authorized_keys && \
# chown -R ubuntu:ubuntu /home/ubuntu/.ssh
RUN chown -R ubuntu:ubuntu /home/ubuntu/.ssh
# SSHのホストキーをイメージに焼き付ける
#RUN ssh-keygen -A
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
build
docker build -t ssh:3 .
run
docker run -d -p 2224:22 --name s3 -h hname ssh:3
dockerdesktop の ポート番号が表示されてないけど、同じ PC からとりあえず接続してみたら、一応動きました。
sshd_config のデフォルト設定が意外とゆるいみたいで、パーミッションとか変更しなくても一応うごいています。最終的には sshd_config を書き換えて厳しめにしないとなと思います。
別 PC から接続
windows のポートを開いておく(管理者権限)
New-NetFirewallRule -DisplayName "ContainerSSH(2220-2229)" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 2220-2229
windows defender ファイアウォールにも登録されたみたい
接続
つながりました。
wsl からも powershell7 からも接続OKでした。
この設定してたの忘れてた
WSL 同士で SSH できないかなと思って、WSL のネットワークの設定を変更していました。
これのおかげてうまくつながっているような気がします。
wsl2 の ip アドレスの設定方法
Mirrored ネットワークモードを利用するといいみたい。
ただし、Windows 11 22H2以降が必要。
.wslconfig ファイルの編集
2台のPCそれぞれで、%UserProfile% フォルダ(C:\Users\YourUsername)にある .wslconfig ファイルに以下の設定を追加する。
[wsl2]
networkingMode=mirrored
WSLの再起動
PowerShellで wsl --shutdown
を実行し、再度Ubuntuを起動します。
windows11 と同じIPアドレスで wsl につながる。でも、別のIPアドレスが割り振られるわけではないようです。
Discussion