プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

docker コンテナに ssh server を立てる

今更という感じですが、テスト用に docker を触るようになったので、メモっておきます。

docker で立てたコンテナに ssh 接続したいというのがあります。でも、『docker ssh』とかで検索すると、docker に ssh サーバーを立てて、コンテナイメージを作る、という記事はたくさん出てくるのですが、立ち上がり済みのコンテナに一時的でいいので、さっと ssh を立てるものは少し探さないと見つかりませんでした。

なので、その際にやったことをまとめておきます。

元ネタはこちらです。

リモートサーバーのコンテナにsshする - Qiita

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 -> 概要 -> コンテナ名をクリック として詳細を表示します。

f:id:junichim:20210602142846p:plain

次に、 設定 -> 詳細設定 と進みます。『ネットワーク』をクリックすると、

f:id:junichim:20210602141353p:plain

のように、ポートフォワーディング設定画面が現れるので、任意のNAS側のポート番号をコンテナの22番ポートに割り当てます(ここでは、32222 を割り当ててます)。

デフォルト設定のままなら、適用を押すとコンテナが再起動します。

これで、準備完了です。

接続

クライアントから、ユーザー名 user123 、接続先 NASのIPアドレス:32222 として接続すると、パスワードを聞かれるので、正しいパスワードを入力したら無事接続できました。

頻繁に使うようなら、イメージを作るのもありですが、とりあえず一時的なテストで使いたいだけならこれで十分です。