SSHでサーバーに接続する際にユーザー名、ホスト名を入れた後、パスワードをいちいち入力するのめんどくさいですよね。というか、強健なパスワードにしてると覚えているわけがないので、いちいちコピペするのもだるいし・・・そんなときに便利なのがRSA公開鍵認証!
これを使えば特定の端末からはいちいちパスワードを入力せずに顔パス接続が可能になります!
目次
公開鍵/秘密鍵の作成
# 公開鍵/秘密鍵を作成する
ssh-keygen -t rsa
ssh-keygenではローカルのsshディレクトリに公開鍵/秘密鍵を作成します。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa):
Enter passphrase(empty for no passphrase):(パスワード)
Enter same passphrase again:(パスワード再入力)
Your identification has been saved in /Users/xxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ユーザ名@ローカルホスト名
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+---[RSA 2048]----+
パスフレーズ部分を入力すると接続時に公開鍵のパスフレーズを聞かれることになるので、パスフレーズを入力せずに鍵を作成します。
さて、ここでパスフレーズを設定しないことによるセキュリティの心配がありますが、これについては別記事にまとめます。
公開鍵をサーバーにアップロード
# 公開鍵をサーバーにアップロード
$ scp ~/.ssh/id_rsa.pub ユーザ名@ホスト名:/home/ユーザ名/.ssh/id_rsa.pub
# アップロードした公開鍵をauthorized_keysに追記
$ cat id_rsa.pub >> .ssh/authorized_keys
scpを使ってローカルに作成した公開鍵をサーバーのsshディレクトリにコピーします。
接続できないとき
sshd_configの確認
# sshd_configを修正
RSAAuthentication yes # RSA認証の許可
PubkeyAuthentication yes # 公開鍵認証の許可
AuthorizedKeysFile .ssh/authorized_keys #公開鍵ファイルのパス
--- (おまけ) ---
# Passwordでのログインを無効化したいときは(きちんと管理された環境なら推奨)
PasswordAuthentication no
# rootでのSSHログインを許可しない場合は(推奨)
PermitRootLogin no
# sshd_configを修正したらssh再起動
$ service sshd restart (CentOS6の場合のコマンド)
.sshディレクトリやauthorized_keysのパーミッションを確認
# ~/.sshは700、authorized_keysは600じゃないと上手く動かないことがある
$ chmod 700 ~/.ssh (こっちは必須!)
$ chmod 600 ~/.ssh/authorized_keys
SSH接続時を楽ちんに管理する
.sshのconfigファイルにエイリアスを登録しておく
Host sample-server01(任意の名前)
HostName ホスト名
User ユーザー
Host sample-server02
...
こうしておけば、ssh接続する際に
$ ssh sample-server01
といった感じで接続できるので、ホスト名がIPアドレスで区別つけにくいなどの場合に便利。
コメント