Hatena::ブログ(Diary)

ぷろぐらま はっくす

2010-09-18

[][]SSHで公開鍵認証 01:21 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に保存されてる。

.sshディレクトリ秘密鍵パーミッションを変更。

$ 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

次回からSSHを実行すると、パスフレーズを聴かれるので

ssy-keygenに入力したものと同じパスフレーズを入力すればログインできる。

パスワード認証を無効化

通常のパスワード認証を無効化して、公開鍵認証のみにする場合

/etc/ssh/sshd_configにある次の項目を変更。

PasswordAuthentication no

その後、SSHデーモンに設定をリロードさせればOK。

# 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