sshで公開鍵認証(パスフレーズ無し)のメモ
10月 6th, 2008 admin Posted in linux |
・サーバのセキュリティを向上のため
・rsyncやRubyのスクリプトなどからパスワードなしでログインするため
・「/秘密のファイル/開くな.txtを開いてコピー&ペースト」をやめるため
の公開鍵認証をするためのメモです。
手順
sshで公開鍵認証をやりたいときにやること
(1)公開鍵と秘密鍵をつくる
(2)公開鍵をリモートに置く
作業
(1)公開鍵と秘密鍵をつくる
まずはローカルで公開鍵と秘密鍵を作ります。
-
$ ssh-keygen -N "" -t rsa
Nはパスフレーズの指定。今回は空にします(セキュリティはその分低下します*1)
tは鍵の種類を選ぶもの。rsa1,rsa,dsaから選べるが最近は強度が高いrsaを選ぶことが多い
上記のコマンドを実行すると$HOME/.sshに
・id_rsa(秘密鍵)
・id_rsa.pub(公開鍵)
が作られる。
(2)公開鍵をリモートに置く
リモートに公開鍵を登録するにはssh-copy-idというそれ専用のコマンドがある
-
ssh-copy-id toyoshi@remote_hostname
これでauthorized_keysに勝手に登録してくれます。便利!
もしくはSPCを使います。SCPコマンドは
"scp 送りたいファイル名 ユーザ名@ホスト名:ディレクトリ"
って感じで。
-
$ cd .ssh/
-
$ scp id_rsa.pub toyoshi@remote_hostname:directory
んでリモートの$HOME/.sshにauthorized_keysという名前で保存する。
すでにauthorized_keysがある場合は追記するようにする。たとえばこんな感じ
-
$ cat id_rsa.pub>> .ssh/authorized_keys
リモートにおいたauthorized_keysはパーミッションを600とかにしておきましょう。
※ssh-copy-idを使った場合は追記の処理とパーミッションの変更は自動でやってくれます。
まとめ
これで
-
ssh remote_host
とかってやると、IDとパスワードの入力はもちろん、秘密鍵のパスフレーズも聞かれずにログインできるようになった。
*1・・・パスフレーズはなしにするが、パスワード認証とは違い秘密鍵のファイルが盗まれない限り大丈夫なので実際には安全性にそれほど差はないと思う。心配な場合はリモートの公開鍵にcommand="" というのを追加して公開鍵認証してきたユーザができることを制限する方法が「rsync + cron + ssh (rsyncd を立てない編)」では紹介されています。そのほかにも「ssh scp sftp の正しい自動実行方法」なども参考になります。
参考サイト
rsync + cron + ssh (rsyncd を立てない編)
ssh scp sftp の正しい自動実行方法
公開鍵暗号でのsshリモートログイン - 別館 子子子子子子(ねこのここねこ)
10月 10th, 2008 at 5:21:51
[...] ・公開鍵認証を使っているのでSSHのパスワードは聞かれない。(作業メモ) ・mysqldumpを絶対パスで指定しないと駄目らしい。 [...]
4月 7th, 2009 at 16:28:30
ssh-copy-id -i .ssh/id_rsa.pub example@www.example.jp
鍵の場所をiで指定できる