Show Table of Contents
12.2. OpenSSH の設定
12.2.1. 設定ファイル
設定ファイルには、クライアントプログラム用 (
ssh、scp および sftp) とサーバー用 (sshd デーモン) の異なる 2 つのセットがあります。
システム全体の SSH 設定情報は、表12.1「システム全体の設定ファイル」 にあるように、
/etc/ssh/ ディレクトリー内に格納されています。ユーザー固有の SSH 設定情報は、ユーザーのホームディレクトリー内の ~/.ssh/ に格納されています。詳細は、表12.2「ユーザー固有の設定ファイル」 に記載しています。
表12.1 システム全体の設定ファイル
| ファイル | 詳細 |
|---|---|
/etc/ssh/moduli | セキュアなトランスポート層を構築するために非常に重要となる、Diffie-Hellman 鍵交換に使用される Diffie-Hellman グループが格納されています。SSH セッションの始めで鍵が交換される時、共有秘密値が作成されますが、どちらか一方の当事者だけでは決定できません。この値はホスト認証を行う場合に使用されます。 |
/etc/ssh/ssh_config | デフォルトの SSH クライアント設定ファイルです。~/.ssh/config が存在する場合には、これにより上書きされる点に注意して下さい。 |
/etc/ssh/sshd_config | sshd デーモン用の設定ファイルです。 |
/etc/ssh/ssh_host_ecdsa_key | sshd デーモンで使用する ECDSA 秘密鍵です。 |
/etc/ssh/ssh_host_ecdsa_key.pub | sshd デーモンで使用する ECDSA 公開鍵です。 |
/etc/ssh/ssh_host_rsa_key | sshd デーモンにより使用される SSH プロトコルのバージョン 2 用の RSA 秘密鍵です。 |
/etc/ssh/ssh_host_rsa_key.pub | sshd デーモンにより使用される SSH プロトコルのバージョン 2 用の RSA 公開鍵です。 |
/etc/pam.d/sshd | sshd デーモン用の PAM 設定ファイルです。 |
/etc/sysconfig/sshd | sshd サービスの設定ファイルです。 |
表12.2 ユーザー固有の設定ファイル
| ファイル | 詳細 |
|---|---|
~/.ssh/authorized_keys | サーバー用の認証済み公開鍵の一覧が含まれています。クライアントがサーバーに接続する時、サーバーはこのファイル内に格納されている署名済み公開鍵を確認してクライアントを認証します。 |
~/.ssh/id_ecdsa | ユーザーの ECDSA 秘密鍵を格納しています。 |
~/.ssh/id_ecdsa.pub | ユーザーの ECDSA 公開鍵です。 |
~/.ssh/id_rsa | ssh により使用される SSH プロトコルのバージョン 2 用の RSA 秘密鍵です。 |
~/.ssh/id_rsa.pub | ssh により使用される SSH プロトコルのバージョン 2 用の RSA 公開鍵です。 |
~/.ssh/known_hosts | ユーザーがアクセスする SSH サーバーのホスト鍵が格納されています。このファイルは SSH クライアントが正しい SSH サーバーに接続していることを確認するために非常に重要です。 |
警告
SSH サーバーを設定する場合、
/etc/ssh/sshd_config ファイルの UsePrivilegeSeparation no ディレクティブを使用することで、Privilege Separation 機能をオフにしません。Privilege Separation をオフにすると、多くのセキュリティー機能が無効となり、サーバーは、セキュリティー上の潜在的な脆弱性にさらされ、攻撃対象となります。UsePrivilegeSeparation に関する詳細は、sshd_config(5) の man ページまたは Red Hat ナレッジベースの記事「 What is the significance of UsePrivilegeSeparation directive in /etc/ssh/sshd_config file and how to test it ?」を参照してください。
SSH 設定ファイルに使用可能な各種ディレクティブについての情報は、
ssh_config(5) および sshd_config(5) の man ページを参照してください。
12.2.2. OpenSSH サーバーの起動
OpenSSH サーバーを実行するには、openssh-server パッケージがインストールされている必要があります。新規パッケージのインストール方法については 「パッケージのインストール」 を参照してください。
現行のセッションで
sshd デーモンを起動するには、シェルプロンプトで root として以下を入力します。
~]# systemctl start sshd.service
現行のセッションで
sshd デーモンを停止するには、root として以下のコマンドを使用します。
~]# systemctl stop sshd.service
デーモンがブート時に自動的に起動するようにするには、
root で以下を入力します。
~]# systemctl enable sshd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.sshd デーモンは network.target ターゲットユニットに依存しており、これは静的設定のネットワークインターフェースやデフォルトの ListenAddress 0.0.0.0 オプションの場合は十分なものです。ListenAddress ディレクティブで別のアドレスを指定してより遅い動的ネットワーク設定を使用するには、network-online.target ターゲットユニット上の依存関係を sshd.service ユニットファイルに追加します。これを行うには、/etc/systemd/system/sshd.service.d/local.conf ファイルを以下のオプションで作成します。
[Unit] Wants=network-online.targetAfter=network-online.target
この後、以下のコマンドで
systemd マネージャー設定をリロードします。
~]# systemctl daemon-reload
Red Hat Enterprise Linux でシステムサービスを管理する詳細情報については、10章systemd によるサービス管理 を参照してください。
システムを再インストールすると、新しい識別鍵のセットが作成される点に注意してください。そのため、再インストールの前にいずれかの OpenSSH ツールを使用してシステムに接続したことがあるクライアントには、以下のようなメッセージが表示されます。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed.
これを防ぐには、
/etc/ssh/ ディレクトリーから関連ファイルをバックアップしておきます。全一覧は 表12.1「システム全体の設定ファイル」 を参照してください。これで、システムを再インストールする時にはファイルを復元できます。
12.2.3. リモート接続に必要な SSH
SSH を本当の意味で有効なものにするためには、セキュリティー保護されていない接続プロトコルは使用しないことをお勧めします。さもないと、ユーザーのパスワードは SSH を使用した 1 回のセッションでは保護されても、その後に Telnet を使用してログインした時には結局傍受されてしまうためです。無効にするサービスは、
telnet、rsh、rlogin、vsftpd などがあります。
vsftpd サービスの設定方法については、「FTP」 を参照してください。Red Hat Enterprise Linux 7 でシステムサービスを管理する方法については、10章systemd によるサービス管理 を参照してください。
12.2.4. 鍵ベース認証の使用
システムのセキュリティーをさらに強化するには、SSH 鍵のペアを生成し、パスワード認証を無効にすることで鍵ベース認証を強制します。これを行うには、
/etc/ssh/sshd_config の設定ファイルを vi や nano などのテキストエディターで開き、PasswordAuthentication オプションを以下のように変更します。
PasswordAuthentication no
新規のデフォルトインストール以外のシステムで作業をしている場合は、
PubkeyAuthentication no が設定されて いない ことを確認してください。リモートで接続している場合は、コンソールもしくは帯域外アクセスを使用せず、パスワード認証を無効にする前にプロセス内で鍵ベースのログをテストすることが推奨されます。
ssh、scp または sftp を使用してクライアントマシンからサーバーに接続できるようにするには、以下のステップに従って認証鍵ペアを生成します。鍵はユーザーごとに別々に生成する必要がある点に注意してください。
NFS がマウントされたホームディレクトリーで鍵ベースの認証を使うには、最初に
use_nfs_home_dirs SELinux ブール値を有効にします。
~]# setsebool -P use_nfs_home_dirs 1
Red Hat Enterprise Linux 7 は、デフォルトでは SSH プロトコル 2 と RSA 鍵を使用します (詳細は 「プロトコルのバージョン」 を参照)。
重要
これらのステップを
root で完了すると、鍵を使用できるのは root のみになります。
注記
システムを再インストールした場合に、以前に生成された鍵ペアを維持したい時は、
~/.ssh/ ディレクトリーをバックアップします。再インストール後に、このディレクトリーをホームディレクトリーにコピーします。この手順は、root を含むシステム上の全ユーザーが実行できます。
12.2.4.1. 鍵ペアの生成
以下のステップに従って SSH プロトコルのバージョン 2 用の RSA 鍵ペアを生成します。
- RSA 鍵ペアを生成するには、シェルプロンプトで以下を入力します。
~]$
ssh-keygen -t rsaGenerating public/private rsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_rsa): - Enter キーを押して、新規作成された鍵用のデフォルトの場所 (
~/.ssh/id_rsa) を確認します。 - パスフレーズを入力します。プロンプトが表示されたら再入力して確認します。セキュリティー上の理由により、アカウントにログインする時と同じパスワードは使用しないでください。この後に、以下のようなメッセージが表示されます。
Your identification has been saved in /home/USER/.ssh/id_rsa. Your public key has been saved in /home/USER/.ssh/id_rsa.pub. The key fingerprint is: SHA256:UNIgIT4wfhdQH/K7yqmjsbZnnyGDKiDviv492U5z78Y USER@penguin.example.com The key's randomart image is: +---[RSA 2048]----+ |o ..==o+. | |.+ . .=oo | | .o. ..o | | ... .. | | .S | |o . . | |o+ o .o+ .. | |+.++=o*.o .E | |BBBo+Bo. oo | +----[SHA256]-----+
注記
以前のバージョンでデフォルトのフィンガープリントだった MD5 鍵フィンガープリントを取得するには、-E md5オプションと共にssh-keygenコマンドを使用します。 - デフォルトで、
~/.ssh/ディレクトリーのパーミッションはrwx------または 8 進数表記の700に設定されます。これは、USER のみがコンテンツを表示できるようにする設定です。必要な場合は、以下のコマンドで確認できます。~]$
ls -ld ~/.sshdrwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/ - 公開鍵をリモートマシンにコピーするには、以下のフォーマットでコマンドを発行します。
これで、インストールされていない場合は最近変更されたssh-copy-id user@hostname~/.ssh/id*.pub公開鍵がコピーされます。別の方法としては、公開鍵ファイル名を以下のように指定します。
これでssh-copy-id -i~/.ssh/id_rsa.pubuser@hostname~/.ssh/id_rsa.pubのコンテンツが接続先のマシン上にある~/.ssh/authorized_keysファイルにコピーされます。このファイルがすでに存在する場合は、この鍵はファイルの最後に追加されます。
SSH プロトコルのバージョン 2 用の ECDSA 鍵ペアを生成するには、以下のステップにしたがいます。
- ECDSA 鍵ペアを生成するには、シェルプロンプトで以下を入力します。
~]$
ssh-keygen -t ecdsaGenerating public/private ecdsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_ecdsa): - Enter キーを押して、新規作成された鍵用のデフォルトの場所 (
~/.ssh/id_ecdsa) を確認します。 - パスフレーズを入力します。プロンプトが表示されたら再入力して確認します。セキュリティー上の理由により、アカウントにログインする時と同じパスワードは使用しないでください。この後に、以下のようなメッセージが表示されます。
Your identification has been saved in /home/USER/.ssh/id_ecdsa. Your public key has been saved in /home/USER/.ssh/id_ecdsa.pub. The key fingerprint is: SHA256:8BhZageKrLXM99z5f/AM9aPo/KAUd8ZZFPcPFWqK6+M USER@penguin.example.com The key's randomart image is: +---[ECDSA 256]---+ | . . +=| | . . . = o.o| | + . * . o...| | = . . * . + +..| |. + . . So o * ..| | . o . .+ = ..| | o oo ..=. .| | ooo...+ | | .E++oo | +----[SHA256]-----+
- デフォルトで、
~/.ssh/ディレクトリーのパーミッションはrwx------または 8 進数表記の700に設定されます。これは、USER のみがコンテンツを表示できるようにする設定です。必要な場合は、以下のコマンドで確認できます。~]$
ls -ld ~/.ssh~]$ ls -ld ~/.ssh/ drwx------. 2 USER USER 54 Nov 25 16:56 /home/USER/.ssh/ - 公開鍵をリモートマシンにコピーするには、以下のフォーマットでコマンドを発行します。
これで、インストールされていない場合は最近変更されたssh-copy-id USER@hostname~/.ssh/id*.pub公開鍵がコピーされます。別の方法としては、公開鍵ファイル名を以下のように指定します。
これでssh-copy-id -i~/.ssh/id_ecdsa.pubUSER@hostname~/.ssh/id_ecdsa.pubのコンテンツが接続先のマシン上にある~/.ssh/authorized_keysにコピーされます。このファイルがすでに存在する場合は、この鍵はファイルの最後に追加されます。
システムにパスフレーズを記憶させる設定方法については 「ssh-agent の設定」 を参照してください。
重要
秘密鍵は、個人使用を目的としているため、他人には決して教えないことが重要です。
12.2.4.2. ssh-agent の設定
ssh-agent 認証エージェントを使用するとパスフレーズを保存することができるため、リモートマシンとの接続を開始する度にパスフレーズを入力する必要がなくなります。GNOME を実行している場合は、ログイン時には常にパスフレーズを求めるプロンプトを表示して、セッションを通してそのパスフレーズを記憶させておくように設定できます。それ以外の方法として、特定のシェルプロンプト用にパスフレーズを保存しておくことも可能です。
以下のステップに従って、GNOME セッション中にパスフレーズを保存します。
- openssh-askpass パッケージがインストールされていることを確認します。インストールされていない場合には、「パッケージのインストール」 で Red Hat Enterprise Linux での新規パッケージのインストール方法について確認してください。
- Super キーを押してアクティビティーの概要に入り、
Startup Applicationsと入力して Enter を押します。Startup Applications Preferences ツールが表示されます。デフォルトでは、利用可能なスタートアッププログラムの一覧を含むタブが表示されます。Super キーはキーボードや他のハードウェアによって外見が異なりますが、通常は Windows または Command キーで、スペースバーの左側にあります。
図12.1 自動起動するアプリの設定
- 右側の ボタンをクリックして、コマンド フィールドに
/usr/bin/ssh-addと入力します。
図12.2 新規アプリケーションの追加
- をクリックした後に、新しく追加した項目の横のチェックボックスにチェックマークが付いていることを確認してください。

図12.3 アプリケーションの有効化
- 一度ログアウトしてから再度ログインします。パスフレーズの入力を求めるダイアログボックスが表示されます。これ以降は、
ssh、scpまたはsftpによるパスワードの入力を要求されることはありません。
図12.4 パスフレーズの入力
特定のシェルプロンプト用のパスフレーズを保存するには、以下のコマンドを使用します:
~]$ ssh-add
Enter passphrase for /home/USER/.ssh/id_rsa:
ログアウト時には、パスフレーズは記憶されない点に注意してください。仮想コンソールまたはターミナルウィンドウにログインする度にコマンドを実行する必要があります。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.