OpenSSHの活用

【連載コラム:Linuxでサーバーを構築してみよう(6)】
セキュリティの観点から重要度が増している「SSH」。その利用の仕方を知ろう。

最終更新日:2023年03月16日

サーバを管理する際に、どのようなサーバでもほぼ必須となるのがOpenSSHです。OpenSSHは、サーバを構築する段階から管理する段階に至るまで、幅広い場面で末永く利用することになります。今回は、OpenSSHについて見ていきましょう。


SSHとは

SSH(Secure SHell)とは、ネットワークを経由して別のコンピュータを操作する際に利用するプロトコルで、通信経路が暗号化されることが特徴です。以前はtelnetがよく利用されましたが、telnetは通信が暗号化されていません。セキュリティが重要視されるようになった昨今では、SSHを利用することが事実上の標準となっています。

SSHの取り扱いには習熟しておこう

サーバを構築する前に、SSHの取り扱いには習熟しておくことをお勧めします。SSHは、サーバを構築する際に利用しますし、管理でも多用します。ぶっつけ本番で使うのではなく、たとえばVirtualBoxに構築した仮想マシンに対してOpenSSHを利用するなど、できるだけ利用する機会を増やしておきましょう。

OpenSSHサーバーの設定ファイル

OpenSSHサーバーの設定ファイルは、/etc/ssh/sshd_configです。sshdとデーモンのdが付きます。このファイルは、/etc/ssh/ssh_configという、クライアントの設定を行うファイルと紛らわしいので注意してください。

OpenSSHを利用するためには、たいていの場合、デフォルトの設定で問題ありません。しかし、セキュリティの観点などから設定を変更する場合には編集が必要になります。

公開鍵認証を利用する

OpenSSHを利用してシステムにログインするためには、公開鍵認証を利用することをおすすめします。通常のログイン方法ではパスワードを入力することになり、ネットワークをパスワードが流れることになりますので、暗号化されているとはいってもリスクがあります。公開鍵認証を利用すると、パスワードをネットワークが流れることがなくなるため、侵入されるリスクが下がります。

鍵のペアを作成する

公開鍵認証を利用するためには、まず公開鍵と、ペアになる秘密鍵を作成します。鍵のペアを作るためには、ssh-keygenというツールを利用します。

$ ssh-keygen

実行すると、ファイル名とパスフレーズをたずねてくるので、それぞれ入力します。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): key01 ←ファイル名を入力(key01とする)
Enter passphrase (empty for no passphrase): ←パスフレーズを入力(非表示)
Enter same passphrase again: ←パスフレーズを再度入力(非表示)

これで鍵ペアができます。鍵のファイルは、秘密鍵がssh-keygenで指定した名前となり、公開鍵はその名前の後ろに「.pub」(publicの頭3文字)を付けたファイル名になります。カレントディレクトリに以下の2つのファイルが作成されていることを確認してください。

秘密鍵:key01
公開鍵:key01.pub

公開鍵はサーバに登録する鍵、秘密鍵は接続時にクライアント側で利用する鍵になります。

サーバで公開鍵認証を許可設定する

/etc/ssh/sshd_configに、公開鍵認証を許可する設定を行います。多くのディストリビューションではデフォルトで設定されているので、その場合には確認のみ行い、サービスの再起動は不要です。

PubkeyAuthentication yes

設定を変更したら、サービスを再起動します。

# systemctl restart sshd

サーバ側に公開鍵を登録する

サーバ側でログインしたいアカウントでログインし、公開鍵を登録します。まず、ホームディレクトリに「.ssh」ディレクトリを作成し、パーミッションを設定します(既にある場合はこの手順は不要です)。

$ cd
$ mkdir .ssh
$ chmod 700 .ssh

なお、パーミッションの設定が適切になされていない場合、公開鍵認証は適切に進行しないので注意してください。

次に、.sshディレクトリ配下にauthorized_keysファイルを作成し、そこに公開鍵を登録します。既にファイルがある場合には公開鍵の追加をします。公開鍵のファイル名を「key01.pub」とした場合、たとえば次のコマンドを実行します。

$ cat key01.pub >> .ssh/authorized_keys

authorized_keysファイルは公開鍵を登録しておくファイルです。クライアントごとに鍵ペアを作成することになるので、クライアントが複数あれば公開鍵を複数登録することになります。このファイルも、初回にパーミッションを設定しておきます。

$ chmod 600 .ssh/authorized_keys

クライアント側からログインを試みる

クライアント側から、sshコマンドでログインを試みます。「-i」オプションに続けて、秘密鍵ファイルを指定します。

$ ssh -i key01 user@サーバの名前かIPアドレス
Enter passphrase for key 'key01' : ←パスフレーズを入力(非表示)

ここで、パスフレーズを入力し、パスワードを聞かれることなくログインできれば、公開鍵認証でのログイン成功です。初回ログイン時はサーバのfinger printをクライアントに登録するか否かを聞かれるので、yesと入力する必要があります。

パスワード認証の禁止

ディストリビューションによっては、デフォルトの設定では公開鍵認証に失敗してもパスワード認証でログインできるようになっています。この状態では公開鍵認証を利用する意味が薄いので、公開鍵認証が成功したら、sshdの設定でパスワードによる認証を禁止にしておきます。

/etc/ssh/sshd_configの設定を以下のように変更します。

PasswordAuthentication no

変更を適用するため、サービスを再起動します。

# systemctl restart sshd

今回の内容は、サーバ構築に留まらず、Linuxを利用する際に常に心掛けておくと、いざ必要になったときにもすぐに対応することができるので、サーバ構築いかんに関わらず、日常的に活用するようにしましょう。

筆者紹介
川原 龍人 氏

川原 龍人 氏

1975年生まれ。
著書に「BIND9によるDNSサーバ構築」、「シェルスクリプト ポケットリファレンス Bash編(技術評論社)」など。
予備校講師としても活躍中。Linuxとのつきあいは20年を超える。

バックナンバー

第14回:バックアップ

第13回:異常発生時の対応

第12回:サーバー構築という仕事

第11回:ユーザー教育の重要性

第10回:テスト環境を構築する

第9回:ログローテーションとは

第8回:ログの取得と管理

第7回:アクセス制限

第6回:OpenSSHの活用

第5回:ユーザーアカウントとアクセス制限

第4回:テスト環境を構築する

第3回:サーバー構築をハードウェアの視点から考えてみる

第2回:CMSを使ったWebサイトを構築するには?

第1回:Linuxでサーバーを構築しよう

ページトップへ