RSA公開鍵認証によるssh接続設定について(Macbook -> VPS)


以下の環境での設定となります。
接続元:Macbook Air (LinuxOSでも応用可能です)
接続先:VPS上に立てているCentOS6.5

前提として
事前にVPSにはコンソールでの操作・またはsshログインが可能であること

どのような設定をすれば公開鍵認証でのssh接続ができるか

ざっくり言うと、
Macbook側で鍵を作成し、その鍵をVPSサーバに登録する
だけです。

Macbook とかVPSとかCentOSとか手順に書くとちょっとややこしいので、
接続元であるMacbookはクライアント
接続先であるVPSはサーバ

と表現します。

1.クライアント側で認証用の鍵を作成

クライアントで以下を実行

公開鍵と秘密鍵の作成

$ pwd
/Users/hogehoge/.ssh

公開鍵と秘密鍵を作成します、鍵の種類はRSAに設定
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hogehoge/.ssh/id_rsa): [鍵の出力先の名前] 
自分はエンター押してデフォルトを利用しました

Enter passphrase (empty for no passphrase): [パスフレーズ]
Enter same passphrase again: [パスフレーズ]
パスワードではなく、パスフレーズ。暗号化に使う文言です。

Your identification has been saved in /Users/hogehoge/.ssh/id_rsa.
Your public key has been saved in /Users/hogehoge/.ssh/id_rsa.pub.
The key fingerprint is:
The key's randomart image is:
+--[ RSA 2048]----+

公開鍵と秘密鍵がセットになっているか確認

別に確認する必要性はないけど、テクニックとして記載。
出力されたファイルがリンクしてるか確認。

# cat id_rsa.pub(公開鍵)
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZ/3pKQoe8s6PNfzVskfvC

# ssh-keygen -y -f id_rsa(秘密鍵)
Enter passphrase: [パスフレーズ]
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCZ/3pKQoe8s6PNfzVskfvC

2. 公開鍵をサーバに設置

公開鍵をサーバに設置

$ scp id_rsa.pub [email protected]:~/.
※公開鍵のみ!秘密鍵は送らないこと

サーバにログイン

$ ssh [email protected]

公開鍵ファイルの設定

$ cd ~/.ssh

~/.ssh/authorized_keysが存在しない場合は作る
$ touch authorized_keys

公開鍵の中身を追記
$ cat ~/id_rsa.pub >> authorized_keys

.sshフォルダとauthorized_keysファイルの権限を設定(権限に問題なければ操作不要
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

3.サーバ側で/etc/ssh/sshd_configを編集し、rsa公開鍵認証を有効にする

root権限での作業です

sshd_configの編集

# cd /etc/ssh
# cp -p sshd_config sshd_config.org
# vi sshd_config

以下のコメントアウト解除
RSAAuthentication yes # RSA認証の許可
PubkeyAuthentication yes # 公開鍵認証の許可
AuthorizedKeysFile .ssh/authorized_keys #公開鍵ファイルのパス

パスワード認証の禁止もする場合はこれをnoにする
PasswordAuthentication no

sshd再起動
# service sshd restart

4.クライアントからsshログイン

あとはクライアントから接続できることを確認するだけ
$ ssh -i ~/.ssh/id_rsa [email protected]

5.おまけ

クライアントのconfigファイルに全部書いちゃうとsshログインは楽です。

$ cd ~/.ssh/
$ vi config

config

Host vps-server
    HostName xx.xx.xx.xx
    Port 22
    User hogehoge
    IdentityFile ~/.ssh/id_rsa

これだけでssh接続ができます
$ssh vps-server