Q. cron 等から起動されるバッチ処理の中で ssh を利用したいのですが、 ログインを自動化するにはどうすればよいですか? A. 二つの方法があります。 一つは、ホストベース認証を使う方法です。詳しい設定方法は [管理番号 1578] で紹介されていますので、そちらを参照して下さい。 もう一つは、パスフレーズの設定されていない秘密鍵を使う方法です。 [管理番号 1578] では、公開鍵認証で ssh-agent を使う方法を紹介していますが、 これは ssh-agent をあらかじめ起動しておく必要があるため、cron 等からの 利用には向いていません。 もちろん、秘密鍵ファイルにパスフレーズを設定しないということは パスワードを生でテキストファイルに保存しているのと同義ですから、 より厳重に鍵ファイルを管理しなければなりません。 そこで、万が一秘密鍵ファイルを盗まれた場合のリスクを軽減するため、 利用制限付きの認証鍵を作成する方法を紹介します。 以下の手順は、OpenSSH 2.9 と 3.4p1 で実行できることを確認しています。 1. パスフレーズのない認証鍵を新しく作成します。 % ssh-keygen -t rsa1 -N "" -f ~/.ssh/backup SSH2 を使う場合は '-t rsa1' を '-t dsa' や '-t rsa' に変えて下さい。 2. 作成された公開鍵ファイル ~/.ssh/backup.pub の先頭に「オプション」を 追加します。 % vi ~/.ssh/backup.pub ... % cat ~/.ssh/backup.pub command="/usr/bin/tar czf - hoge",no-pty,no-port-forwarding 1024 35 1472731(以下略) この例では、"/usr/bin/tar czf - hoge" というコマンドだけが実行可能な ように指定しています。オプションには他にも多くの種類があります。 詳しくは sshd(8) を参照して下さい。 3. 編集した公開鍵ファイルをリモートホストへ転送します。 % cat ~/.ssh/backup.pub | ssh remotehost 'cat >> .ssh/authorized_keys' これで、準備は完了です。 % ssh -q -i ~/.ssh/backup remotehost > backup.tgz とすると、リモートホストでの "/usr/bin/tar czf - hoge" の出力が ローカルホストの backup.tgz に格納されます。 また、万が一 ~/.ssh/backup の内容が洩れたとしても、 この鍵では "/usr/bin/tar czf - hoge" というコマンドしか実行できないので 被害を最小限に押えることができます。 なお、/etc/ssh/sshd_config に以下のように記述しておくと、 通常の root ログインを禁止しながら、command オプションを指定した 公開鍵認証のみを許可することができます。 ----------- PermitRootLogin forced-commands-only ----------- この機能はリモートバックアップ等を実行する場合に非常に便利です。
グループ名: ssh