目次
SSH公開鍵認証とは
パスワード認証は、クライアントからサーバへ、ユーザ名とパスワードを送信すします。
一方、鍵交換方式の認証(SHH)は公開鍵暗号方式を利用し た認証なので、パスワードがネットワーク上を流れる事はありません。
よって、鍵が外部に漏れなけ ればパスワード認証よりもセキュリティを高める事が可能になります。
メリット
・セキュリティの向上(秘密鍵が漏れなければほぼクラックされない)
・パスワード無しでサーバーにログインできる
・設定で簡単にログインできる
デメリット
・最初の設定が面倒
・秘密鍵を忘れた場合、処理が大変(サーバー管理パネルでログインし、~/.ssh/authorized_keysを再 設定)
設定方法
クライアント側
ssh-keygen -t rsa -f ~/.ssh/ファイル名
// ex
ssh-keygen -t rsa -f ~/.ssh/bitbacket
ファイル名(秘密鍵)とファイル名.pub(公開鍵)の2種類のファイルができる。
ssh-keygenコマンドでパスフレーズを要求されるが無視して空にする。
サーバー側
SSHの設定を編集
sudo vim /etc/ssh/sshd_config
// RSA認証の許可
RSAAuthentication yes
// 公開鍵認証の許可
PubkeyAuthentication yes
// 鍵ファイルの置き場所
AuthorizedKeysFile .ssh/authorized_keys
// パスワードなしでの認証を許可しない(鍵認証に成功してから反映させないとログインできなくなる)
PasswordAuthentication no
sshdの再起動
sudos service sshd restart
authorized_keysファイルの作成
ホームディレクトリに、.sshディレクトリがなければ作成する。
.sshディレクトリにauthorized_keysを作成し、中身を、クライアントで作った公開鍵(ファイル名.pub)にする。
すでにauthorized_keysがある場合、公開鍵の中身を追加する。
パーミッションの変更
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ログイン
// 最初だけ
$ ssh -i ~/.ssh/ファイル名 ユーザ名@ホスト名
カスタマイズ
クライアント側の~/.ssh/configファイルを編集する
Host 名前(なんでも良い)
HostName ホスト名
IdentityFile ~/.ssh/ファイル名
User ログインするユーザー名
例
Host test
HostName example.com
IdentityFile ~/.ssh/example
User example
下記コマンドでログインできるようになる
ssh test
秘密鍵と公開鍵はセットなので、サーバーに公開鍵を設置することによりログインできる。したがって公開鍵は使い回しができる。
Pankaj PatelPhoto by Pankaj Patel on Unsplash