以下の環境での設定となります。
接続元: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 user@xx.xx.xx.xx:~/.
※公開鍵のみ!秘密鍵は送らないこと
####サーバにログイン
$ ssh user@xx.xx.xx.xx
####公開鍵ファイルの設定
$ 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 user@xx.xx.xx.xx
##5.おまけ
####クライアントのconfigファイルに全部書いちゃうとsshログインは楽です。
$ cd ~/.ssh/
$ vi config
Host vps-server
HostName xx.xx.xx.xx
Port 22
User hogehoge
IdentityFile ~/.ssh/id_rsa
これだけでssh接続ができます
$ssh vps-server