今更という感じですが、テスト用に docker を触るようになったので、メモっておきます。
docker で立てたコンテナに ssh 接続したいというのがあります。でも、『docker ssh』とかで検索すると、docker に ssh サーバーを立てて、コンテナイメージを作る、という記事はたくさん出てくるのですが、立ち上がり済みのコンテナに一時的でいいので、さっと ssh を立てるものは少し探さないと見つかりませんでした。
なので、その際にやったことをまとめておきます。
元ネタはこちらです。
docker コンテナの開始
今回は tomcat のコンテナを立ち上げました。コンテナは、 QNAP の NAS 上に立ててます。 QNAP の場合、 Container Station でイメージを探して、コンテナを立ち上げればあっという間に立ち上がります。
で、これに外から接続したいというものです。
調べたところ、結局、コンテナ内に、普通に ssh server を立ち上げて、ポートフォワードしてあげればそれでOKという結論でした。
ssh server のインストール
QNAP の Container Station からコンテナをクリックして、コンソールにログインします。
コンソールが立ち上がったら、 openssh-server をインストールします。
root@tomcat-1:~# apt install openssh-server
ちなみに、今回使った tomcat のイメージは debian buster がベースになっていました。
sshd_config の設定
/etc/ssh/sshd_config を編集します。下記行のコメントを外して有効にします。
Port 22 AddressFamily any ListenAddress 0.0.0.0 PasswordAuthentication yes
Port 番号、接続元アドレスを設定し、パスワード認証を有効にします。 一時的にテストで使うだけなので、設定はざるです。
sshd を再起動しておきます。
root@tomcat-1:~# /etc/init.d/ssh restart
ユーザーの作成
SSH ログイン用のユーザーを作成しておきます。
root@tomcat-1:~# adduser user123
sudo のインストールと設定
作成したユーザーにsudoの権限を与えます。 sudoそのものがインストールされてなかったので、先にインストールします。
root@tomcat-1:~# apt install sudo root@tomcat-1:~# gpasswd -a user123 sudo
ポートフォワーディング
QNAP の GUI から設定します。QNAP にログインして、 Container Station -> 概要 -> コンテナ名をクリック として詳細を表示します。
次に、 設定 -> 詳細設定 と進みます。『ネットワーク』をクリックすると、
のように、ポートフォワーディング設定画面が現れるので、任意のNAS側のポート番号をコンテナの22番ポートに割り当てます(ここでは、32222 を割り当ててます)。
デフォルト設定のままなら、適用を押すとコンテナが再起動します。
これで、準備完了です。
接続
クライアントから、ユーザー名 user123 、接続先 NASのIPアドレス:32222 として接続すると、パスワードを聞かれるので、正しいパスワードを入力したら無事接続できました。
頻繁に使うようなら、イメージを作るのもありですが、とりあえず一時的なテストで使いたいだけならこれで十分です。