2010-09-18
■[unix][ssh]SSHで公開鍵認証

SSHで公開鍵認証をするためのまとめ。
公開鍵を作成
$ ssh-keygen -t rsa
-t で指定できる暗号化方式には他にdsaやrsa1があるみたいだけど
dsaは強度がイマイチ、SSH2を使いたいのでrsaにしとく。(SSH1の場合はrsa1を指定)
実行結果:
Generating public/private rsa key pair. Enter file in which to save the key (/Users/nauthiz/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/nauthiz/.ssh/id_rsa. Your public key has been saved in /Users/nauthiz/.ssh/id_rsa.pub.
途中で訊かれるパスフレーズは、SSHでログインする時に必要。
実行後、秘密鍵は~/.ssh/id_rsa、公開鍵は~/.ssh/id_rsa.pubに保存されてる。
$ chmod 700 ~/.ssh $ chmod 600 ~/.ssh/id_rsa
接続先サーバに公開鍵を登録
scp等で、秘密鍵(~/.ssh/id_rsa)を接続先のサーバに保存。
公開鍵認証を利用するユーザのホームディレクトリに.sshディレクトリを作成。
$ mkdir ~/.ssh $ chmod 700 ~/.ssh
~/.ssh/authorized_keysに公開鍵追記すれば、登録完了。
はじめてauthorized_keysを作成する場合はパーミッションも変更しとく。
$ cat id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys
ssy-keygenに入力したものと同じパスフレーズを入力すればログインできる。
パスワード認証を無効化
通常のパスワード認証を無効化して、公開鍵認証のみにする場合
/etc/ssh/sshd_configにある次の項目を変更。
PasswordAuthentication no
# service sshd reload
番外: 複数の鍵を使い分ける
SSHではデフォルトで~/.ssh/id_rsaを秘密鍵として使用する。
でも自宅サーバとレンタルサーバのように同じ秘密鍵を使いたくないことってあるよね。
そんな場合は、ssh-keygenの-fで秘密鍵・公開鍵を別の場所に作成し
$ ssh-keygen -t rsa -f ~/.ssh/hoge/id_rsa
例の出力先:
sshの-iオプションで指定すれば利用する秘密鍵を切り替えられる。
$ ssh <接続先サーバ> -i ~/ssh/hoge/id_rsa
コメント
トラックバック - http://d.hatena.ne.jp/nauthiz/20100918/1284826895
