Posted at

Dockerのコンテナで"ssh: command not found"と表示されたときの対処法

More than 1 year has passed since last update.

~ $ ssh

sh: ssh: not found

Dockerで動かしているプログラムから、他のサーバーで動いているプログラムにssh接続して操作したい、ということがあると思います。

そのときに、Dockerのコンテナにsshコマンドが無いと動かすことができないので、sshをインストールしましょう。


1 . DockerのOSを調べる

以下のコマンドをコンテナ内で実行して、そのコンテナのOSを調べます。

$ grep -H "" /etc/*version ; grep -H "" /etc/*release

軽量のAlpineを使用していれば以下のように出るはず。

/etc/alpine-release:3.4.6

/etc/os-release:NAME="Alpine Linux"

OSによって、sshのインストールの方法は異なるので、それぞれのOSに合わせてください。

ここでは、Alpine Linux, CentOS, Ubuntsuの場合のsshインストール方法を掲載します。


2 . 1 Alpine Linuxにsshをインストール

以下のコマンドを実行すれば、sshをインストールできます。

$ apk add openssh

ただ、毎回コマンドを実行するのは大変なので、Dockerfileに記載しておくことをお勧めします。

RUN apk add openssh


2 . 2 CentOSにsshをインストール

以下のコマンドを実行すれば、sshをインストールできます。

$ yum -y install openssh-server

$ yum -y install openssh-clients

同じくDockerfileに記載推奨です。


2 . 3 Ubuntsuにsshをインストール

以下のコマンドを実行すれば、sshをインストールできます。

$ apt-get install openssh-server

上に同じ。

これでHOMEディレクトリに.sshディレクトリが作成されて、sshコマンドが有効になっているはずです。

.sshディレクトリに必要なconfigファイルやpemファイルを格納して、sshを実行してください。

ちなみに、Dockerに限らずOSを調べたい時は多いので、OSを調べるコマンドは便利だったりします。