サーバーでは、パスワードのログインだけでは、強固なパスワードにしたとしても、パスワードが漏れると破られる危険性があります。そこで、サーバーを外部からSSHで接続する時に『鍵』を使います。秘密鍵をローカルのフォルダに保存しておいて、公開鍵をサーバー側においておいて、2つの鍵が一致した時にのみ接続を許可する状態にしておきます。
この方法を用いると、家の鍵と同じようにローカルの『秘密鍵』を持っていない事にはログインができなくなり、セキュリティで強くなります。また、SSHに接続する時にパスワードを省略する事も出来るようになります。
*テストサーバー
最初に鍵の生成
*実際の鍵の生成は、クライアント側で行った方が秘密鍵が漏れにくくなるので安全性が高くなる。
root@111-111-111-211:~# ssh-keygen -t rsa (#ローカル・サーバー側で生成する場合とも同じ)
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): # 変更の必要がなければそのまま空 Enter
Enter passphrase (empty for no passphrase): # パスフレーズ設定 (空 Enter でノーパス設定)
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:iamfrogLLSDFRmmarewSRRomagcsVPWAtlc root@111-111-111-111
The key's randomart image is:
+---[RSA 2048]----+
| . |
| o E |
| . = + . |
| * o.o . |
| . * =o.S = |
| * = oo* |
| . = +.+o. |
| . *o=+o |
| . o====o |
+----[SHA256]-----+~/.ssh/
ディレクトリに、id_rsa(秘密鍵)とid_rsa.pub(公開鍵)が生成された。
$ cd ~/.ssh/ #本当に生成されたかを確認
authorized_keys id_rsa id_rsa.pub #生成されている。
生成された鍵の片方を移動
秘密鍵をローカル、公開鍵をサーバーへ。
# .ssh配下にauthorized_keysが既にある場合 $ cat id_rsa.pub >> authorized_keys #authorized_keys ファイルに統合 $ rm id_rsa.pub
# .ssh配下にauthorized_keysがない場合(id_rsa.pubをauthorized_keysにする) $ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
サーバーで生成した秘密鍵をダウンロードする場合
$ scp root@111.111.111.111:~/.ssh/id_rsa ./ $ mv id_rsa ~/.ssh/ (#.ssh以下に移動)
ローカルで生成した公開鍵をアップロードする場合
$ scp -P 22 ~/.ssh/id_rsa.pub root@111.111.111.111:~/.ssh/authorized_keys
# サーバ側
$ chmod 600 ~/.ssh/authorized_keys
# クライアント側
($ mkdir ~/.ssh) $ chmod 700 ~/.ssh
*サーバー側で作成した秘密鍵をクライアント側にファイル転送すると、クライアント側から鍵認証でログイン出来る。
パスワードのログイン禁止
# サーバ側で下記ファイルを編集
$ sudo vi /etc/ssh/sshd_config
# 編集内容
ChallengeResponseAuthentication no PasswordAuthentication no
# 編集後にsshdをリスタートする(Ubuntu)
$ sudo /etc/init.d/ssh restart
参考:
-------------------------------------------------------------------------------
公開鍵暗号を用いてのSSH接続(初歩)
http://qiita.com/Y-Mukoyama/items/f20def019e25dc162ca8
鍵の生成
https://www.server-world.info/query?os=Ubuntu_15.04&p=ssh&f=4
秘密鍵を付けるなら11文字以上
http://freak-da.hatenablog.com/entry/20100901/p1