玄箱で指定したコマンドのみをOpenSSHで使う

OpenSSH(ssh)では、接続した際指定したコマンドを実行するよう設定することができます。

sshd_configの設定とauthorized_keysの設定で実現することができます。

sshでの接続を確認する

sshで接続できるか確認するには、接続先ホストに登録した公開鍵とペアとなる秘密鍵を 使って接続します。

# ssh -i /root/.ssh/rsync root@192.168.xxx.010
The authenticity of host '192.168.xxx.010 (192.168.xxx.010)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?

sshで初めて接続するホストの場合、接続先のホストのフィンガープリントの表示と「本当にこのホストに接続したいのか?」 という問合せが行なわれます。ユーザはここでログイン先が本当に目的のホストであることを確認します。

ここで「yes」と答えると、known_hostsというファイルに接続先のホストの公開鍵を保存し、 今後の接続時に変っていないかチェックして、なりすましに対処します。

特定のコマンドを実行する為の設定

/etc/ssh/sshd_configのPermitRootLoginの設定を次のように変更します。

PermitRootLogin forced-commands-only

この設定は、root がログインできるかどうかなどを指定するのですが、ここにforced-commands-onlyを 指定することで、指定したコマンドのみ実行されるように設定できます。

次に、実行するコマンドを設定します。この設定は、authorized_keys(鍵束)に設定します。

例えば、lsコマンドのみに設定します。authorized_keysに「command="実行するコマンド"」を 追加し保存します。

vi /root/.ssh/authorized_keys

command="/bin/ls -la" ssh-rsa AAAAB3N…

次のようにlsコマンドが実行されると思います。

# ssh -i /root/.ssh/rsync root@192.168.xxx.010
合計 32
drwxr-xr-x   3 root root 4096 2006-05-23 22:35 .
drwxr-xr-x  21 root root 4096 2006-05-17 22:21 ..
-rw-------   1 root root 7778 2006-05-19 23:07 .bash_history
-rw-r--r--   1 root root  410 1998-09-07 00:07 .bashrc
-rw-r--r--   1 root root  202 1999-12-21 09:34 .profile
-rw-------   1 root root 1024 2006-05-08 21:37 .rnd
drwxr-xr-x   2 root root 4096 2006-05-23 22:36 .ssh
Connection to 192.168.xxx.010 closed.