SSHを使用したリモートサーバでのコマンド自動実行
仕事で、SSH を利用してリモートサーバ上のプログラムを自動実行する必要がありました。
で、調べたら下記の分かりやすいページを発見。
リモートサーバ側に置いておく、公開鍵の情報に対してオプションを指定できることをはじめて知りました。command="" オプションを使用することで、その公開鍵を使用して認証した場合は、常に指定されたコマンドが実行されます。
公開鍵+command オプションで、やりたいことは実現できたのですが、途中でちょっとしたことに気づかないで嵌ってしまい、数時間無駄にしてしまいました・・・・
.ssh ディレクトリや、公開鍵を格納しておく authorized_keys ファイルに対して、所有者以外の書き込み権限が付与されてしまっている場合、sshd って authorized_keys を利用しないんですね・・・安全性を考えてのことだと思うのですが、全然原因にきづかなくて嵌ってました(汗
教訓、.ssh ディレクトリとか、authorized_keys ファイルとか、人に読ませる必要がないものは、迷わず chmod go-rwx とかってしておくべきですね。
以下、備忘録
[netpenguin@nono ~]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/netpenguin/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/netpenguin/.ssh/id_dsa. Your public key has been saved in /home/netpenguin/.ssh/id_dsa.pub. The key fingerprint is: c9:56:57:ec:9d:94:2c:4b:67:ae:20:14:dd:03:46:e1 netpenguin@nono [netpenguin@nono ~]$ cd .ssh [netpenguin@nono .ssh]$ cdmod go-rwx * [netpenguin@nono .ssh]$ scp id_dsa.pub netpenguin@ai:id_dsa.pub [netpenguin@nono .ssh]$ ssh ai netpenguin@ai's password: [netpenguin@ai ~]$ [netpenguin@ai ~]$ mkdir .ssh [netpenguin@ai ~]$ mv id_dsa.pub .ssh/authorized_keys [netpenguin@ai ~]$ cd .ssh [netpenguin@ai .ssh]$ chmod go-rwx *
すでに authorized_keys が存在していて、新たに公開鍵を追加する場合は以下のようにするとか。
[netpenguin@ai ~]$ cat id_dsa.pub >> .ssh/authorized_keys [netpenguin@ai ~]$ rm id_dsa.pub