はじめにこの講義では、sshとsshdを理解してサーバーにsshdをインストールした開発環境を構築できることを目標とする講義を行います。sshとsshdは奥の深い分野なので、WEBエンジニアやネイティブエンジニアが最低限押させておくべき内容に絞っています。講義の対象は、プログラミングや開発の経験がある人になります。開発環境はdockerでcentos6.9を利用して構築します。Shell)は、あるマシンから別のマシンにアクセスしてログインするためのソフトウェアです。主な用途は、自分のマシン(以下クライアント)からWEBサーバーなどの遠隔マシン(以下ホスト)にログインするために使われます。公開鍵暗号方式で暗号化して通信します。暗号化しない通信としてtelnet、rsh、rcp、ftp等があることも知っておくと良いでしょう。ほとんどのパソコンでsshはインストール済みです。ターミナルやコマンドプロンプトを開いでsshと入力するとコマンドの使い方が表示されます。[command]もし利用しているマシンにsshがインストールされていない場合はopenssh-clientsをイントールします。例として、centos6.9でのイントール方法を記載します。centos6.9の場合、yumコマンドでインストールします。openssh-clientsライブラリの接頭文字に付加されているopensshはBSDライセンスのフリーソフトです。openssh-clientsをインストールすると、sshコマンドが利用できるようになります。ユーザー名を指定して、ホストにsshでログインしてみます。kakaroto@localhostログインに成功するとターミナルにユーザー名が表示されます。デーモン)はsshのためのデーモンプログラム(OSが稼動している間、ずっと動いているプログラム)ですsshdはクライアントからの接続(主にssh)をlisten(待ち受け)します。sshdはsshの接続先ホストで動作している必要があります。centos6.9の場合、yumコマンドでインストールします。openssh-serveropenssh-serverをインストールすると、OpenSSHサーバーとして利用できるようになります。known_hostsknown_hostsは、接続したことのある各ホストの公開鍵を保存するファイルです。クライアント側のknown_hostsに書き込まれます。実際に流れを確認してみましょう。authorized_keysクライアントからホストに接続します。root@localhost最初のホストへの接続の場合、サーバを信頼するかどうかの選択肢が表示されます。