sshで公開鍵認証(パスフレーズ無し)のメモ

10月 6th, 2008 admin Posted in linux |

・サーバのセキュリティを向上のため
・rsyncやRubyのスクリプトなどからパスワードなしでログインするため
・「/秘密のファイル/開くな.txtを開いてコピー&ペースト」をやめるため
の公開鍵認証をするためのメモです。

手順

sshで公開鍵認証をやりたいときにやること
(1)公開鍵と秘密鍵をつくる
(2)公開鍵をリモートに置く

作業

(1)公開鍵と秘密鍵をつくる

まずはローカルで公開鍵と秘密鍵を作ります。

CODE:
  1. $ ssh-keygen -N "" -t rsa

Nはパスフレーズの指定。今回は空にします(セキュリティはその分低下します*1)
tは鍵の種類を選ぶもの。rsa1,rsa,dsaから選べるが最近は強度が高いrsaを選ぶことが多い

上記のコマンドを実行すると$HOME/.sshに
・id_rsa(秘密鍵)
・id_rsa.pub(公開鍵)
が作られる。

(2)公開鍵をリモートに置く

リモートに公開鍵を登録するにはssh-copy-idというそれ専用のコマンドがある

CODE:
  1. ssh-copy-id toyoshi@remote_hostname

これでauthorized_keysに勝手に登録してくれます。便利!

もしくはSPCを使います。SCPコマンドは
"scp 送りたいファイル名 ユーザ名@ホスト名:ディレクトリ"
って感じで。

CODE:
  1. $ cd .ssh/
  2. $ scp id_rsa.pub toyoshi@remote_hostname:directory

んでリモートの$HOME/.sshにauthorized_keysという名前で保存する。
すでにauthorized_keysがある場合は追記するようにする。たとえばこんな感じ

CODE:
  1. $ cat id_rsa.pub>> .ssh/authorized_keys

リモートにおいたauthorized_keysはパーミッションを600とかにしておきましょう。

※ssh-copy-idを使った場合は追記の処理とパーミッションの変更は自動でやってくれます。

まとめ

これで

CODE:
  1. ssh remote_host

とかってやると、IDとパスワードの入力はもちろん、秘密鍵のパスフレーズも聞かれずにログインできるようになった。

*1・・・パスフレーズはなしにするが、パスワード認証とは違い秘密鍵のファイルが盗まれない限り大丈夫なので実際には安全性にそれほど差はないと思う。心配な場合はリモートの公開鍵にcommand="" というのを追加して公開鍵認証してきたユーザができることを制限する方法が「rsync + cron + ssh (rsyncd を立てない編)」では紹介されています。そのほかにも「ssh scp sftp の正しい自動実行方法」なども参考になります。

参考サイト

rsync + cron + ssh (rsyncd を立てない編)
ssh scp sftp の正しい自動実行方法
公開鍵暗号でのsshリモートログイン - 別館 子子子子子子(ねこのここねこ)

2 Responses to “sshで公開鍵認証(パスフレーズ無し)のメモ”

  1. [...] ・公開鍵認証を使っているのでSSHのパスワードは聞かれない。(作業メモ) ・mysqldumpを絶対パスで指定しないと駄目らしい。 [...]

  2. ssh-copy-id -i .ssh/id_rsa.pub example@www.example.jp

    鍵の場所をiで指定できる

Leave a Reply