ssh
$CREATE 10/26/2002 by Mie Suemitsu
$UPDATE 06/08/2004 by Mie Suemitsu
ssh
RSA鍵ペアを生成し、リモートサーバ接続時にパスワードを要求しないようにする
1.RSA鍵ペアを生成
# cd
# ssh-keygen -t rsa
キーファイルの保存場所はデフォルトの $HOME/.ssh でよい
パスフレーズは何も入力せず enter キーのみ入力する
.ssh に id_rsa と id_rsa.pub が生成される
id_rsa が秘密鍵、id_rsa.pub が公開鍵である
2.$HOME/.ssh のパーミッションを変更
3.$HOME/.ssh/id_rsa.pub をリモートサーバの $HOME/.ssh/authorized_keys2 へコピー
既に $HOME/.ssh/authorized_keys2 が存在する場合は上書きせずに次の行に追加する
公開鍵は複数登録できる
$HOME/.ssh/authorized_keys2 のパーミッションを変更
# chmod 600 authorized_keys2
以上で、リモートサーバに ssh接続する場合パスワードを要求してこない
cron での実行が可能になる
cron で rsync を実行する場合など ssh でパスワードを要求されないようにする必要がある
バージョンが同じ場合は上記の方法で動作するが、バージョンが異なる場合には上記の方法ではやはり ssh 接続でパスワードを要求される
そのような場合は下記の方法で可能になる
1.ssh サーバに RSA鍵ペアを生成
# cd
# ssh-keygen -t rsa
キーファイルの保存場所はデフォルトの $HOME/.ssh でよい
パスフレーズは何も入力せず enter キーのみ入力する
.ssh に id_rsa と id_rsa.pub が生成される
id_rsa が秘密鍵、id_rsa.pub が公開鍵である
2.$HOME/.ssh のパーミッションを変更
3.$HOME/.ssh/id_rsa.pub を $HOME/.ssh/authorized_keys へコピー
既に $HOME/.ssh/authorized_keys が存在する場合は上書きせずに次の行に追加する
公開鍵は複数登録できる
# cd .ssh
# cat id_rsa.pub >> authorized_keys
$HOME/.ssh/authorized_keys のパーミッションを変更
# chmod 600 authorized_keys
4. 次に ssh サーバの id_rsa をパスワード無しで ssh 接続したいクライアントの /root にコピー (ftp などで持ってくる)
ここからはクライアントでの作業
evalコマンドでssh-agentを起動する
# eval `ssh-agent`
ここで「ssh-agent」を囲んでいる記号は[Shift]+[@]キーの「`」
[Shift]+[7]キーの「'」ではない
5. 認証エージェント(ssh-agent)に秘密鍵を登録
# cd
#ssh-add id_rsa
この id_rsa は ssh サーバの秘密鍵である
6. これで rsync などを実行してもパスワードを要求されない
rsync -avz -e ssh remote_server:/home/hogehoge/ /home/hogehoge
7. ssh-agent を終了する
8. rsync を cron で実行するには次のようなシェルを実行する
#!/bin/bash
eval `ssh-agent`
rsync -avz -e ssh remote_server:/home/hogehoge/ /home/hogehoge
eval `ssh-agent -k`