- トップ >
- FAQ >
- セキュリティについてのFAQ >
SSHサーバを公開鍵認証にしたい
[Q.]
SSHサーバを公開鍵認証にしたい
[A.]
SSHサーバ運用時の留意事項について の内容も参考にしていただくようお願いいたします。
クライアント側での操作
- 以下の 1,2 を実施後、5の手順にてログインします
サーバ側での操作
- 以下の 3,4 を実施します
1. 秘密鍵・公開鍵のペアを作成する
こちらの手順は、ログイン元のローカルホストでの操作となります。
以下、「鍵の名前」の部分は適宜読み替えていただくようお願いします。
a. Windows OS の場合
ここでは PuTTY , または, Tera Term を利用した鍵生成の手順を紹介します。
i. PuTTY の場合
-
PuTTYgenを起動します
-
Parameters に ECDSA を選択し、Actions の Generate をクリックします。
指示の通りに空白のエリアでマウスを動かします。- このページではECDSAを推奨していますが、ソフトウェアのアップデートの有無などによってはECDSAに対応していないことがあります。ECDSAで鍵を作成し、公開鍵認証に失敗するという場合には、RSAによる暗号化をお試しください。
-
Keyが生成されたら Key passphrase: 欄と Confirm passphrase: 欄にパスワードを入力し、Actions の Save private key ボタンを押して秘密鍵を保存します。秘密鍵は'鍵の名前'という名前で保存します。また、「Public key for pasting in to Open SSH authorized_keys file:」欄の内容を全てメモ帳などにコピーして、'鍵の名前.pub'という名前で保存します。こちらは公開鍵となります。Save public key ボタンは使用しません。
鍵の名前・保存場所は任意の場所で構いません。ただし、秘密鍵ファイルは外部に漏洩すると不正ログインに利用されるので、大切に保管してください。
ii. Tera Term の場合
-
Tera Term を起動し, 「Tera Term: 新しい接続」ウインドウをキャンセルして閉じます。
-
設定 > SSH鍵生成 を選択します
-
鍵の種類 に ECDSA-256 を選択し、生成 をクリックします。
- このページではECDSAを推奨していますが、ソフトウェアのアップデートの有無などによってはECDSAに対応していないことがあります。ECDSAで鍵を作成し、公開鍵認証に失敗するという場合には、RSAによる暗号化をお試しください。
生成のクリック後、パスフレーズを入力したら公開鍵と秘密鍵を保存します。公開鍵は'鍵の名前.pub'という名前で、秘密鍵は'鍵の名前'という名前で保存します。鍵の名前・保存場所は任意のもので構いません。ただし、秘密鍵ファイルは外部に漏洩すると不正ログインに利用されるので、大切に保管してください。
b. Mac OS, Linux OS の場合
-
ホームディレクトリ下の.sshディレクトリに移動します。
$ cd ~/.ssh
-
.sshディレクトリがない場合は作成します。
$ mkdir ~/.ssh $ chmod 700 ~./ssh $ cd ~/.ssh
-
.sshディレクトリがない場合は作成します。
-
ECDSAによる暗号化で鍵のペアを生成します。
$ ssh-keygen -t ecdsa -f 鍵の名前 Generating public/private ecdsa key pair. Enter passphrase (empty for no passphrase):
-
このページではECDSAを推奨していますが、ソフトウェアのアップデートの有無などによってはECDSAに対応していないことがあります。ECDSAで鍵を作成し、公開鍵認証に失敗するという場合には、RSAによる暗号化をお試しください。
$ ssh-keygen -t rsa -f 鍵の名前
-
このページではECDSAを推奨していますが、ソフトウェアのアップデートの有無などによってはECDSAに対応していないことがあります。ECDSAで鍵を作成し、公開鍵認証に失敗するという場合には、RSAによる暗号化をお試しください。
-
鍵にパスフレーズを入力します。
Enter passphrase (empty for no passphrase): xxxxxxxx
- '鍵の名前'という秘密鍵ファイルと'鍵の名前.pub'という公開鍵ファイルが作成されていることをご確認ください。秘密鍵ファイルは外部に漏洩すると不正ログインに利用されるので、大切に保管してください。
2. 公開鍵を管理者に送信する
公開鍵は外部に見られても安全なファイルです。
メールなどを利用してサーバの管理者に'鍵の名前.pub'ファイルを送信します。
3. 公開鍵をサーバに登録する
以下はログインする先のリモートホストでの操作となります。- クライアントから'鍵の名前.pub'を受け取ります。
-
クライアントのホームディレクトリ下の.sshディレクトリに移動します
$ cd クライアントのホームディレクトリ/.ssh
-
公開鍵ファイルである'鍵の名前.pub'を公開鍵認証に用いる公開鍵として登録します。
$ cat 鍵の名前.pub >> authorized_keys $ chmod 600 authorized_keys
4. パスワード認証を無効にする
こちらの手順の実行後は、公開鍵認証以外の方法ではSSHサーバにログインできなくなります。
- SSHサーバ側でパスワード認証を無効にし、公開鍵認証によるログインに限定します。
方法については SSHサーバのセキュリティを強化したい をご覧ください。
5. 秘密鍵を使ってサーバにログインする
a. Windows OS の場合
ここでは PuTTY , または, Tera Term を利用したログイン手順を紹介します。
i. PuTTY の場合
-
Connection > SSH > Auth と移動し、Brouse をクリックし、上で作成した秘密鍵'鍵の名前'を選択します。
-
Session と移動し、Save ボタンでこの設定を保存しておくと次回以降の接続が簡単になります。
ii. Tera Term の場合
-
接続先のホスト名を入力してOKを押下後、次の画面が表示されます。
ユーザ名と認証鍵に登録したパスフレーズを入力します。
また、認証方式に「RSA/DSA/ECDSA/ED25519鍵を使う」を選択し、上の手順で生成した秘密鍵'鍵の名前'を指定します。
b. Mac OS, Linux OS の場合
-
sshコマンドを使用する際に-iオプションで秘密鍵のパスを指定します。
$ ssh -i ~/.ssh/鍵の名前 ログインするサーバ
最終更新日: 2020年4月16日
内容はここまでです。