authorized_keysのコマンド

authorized_keysにcommandってのを書くとその公開鍵でログインしてきたユーザにそのコマンドを実行させることが出来るということを知った。きっと知らなかったのは私だけでしょう。

command="~/env.groovy" ssh-rsa xxx

な感じで

#!/usr/bin/env groovy

System.env.each { 
  println it
}

を実行してみる。結果はこんなん。

$ ssh groovy@host hogehoge 
SHELL=/bin/bash
SHLVL=1
JAVA_HOME=/usr/lib/jvm/java-6-openjdk/jre
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
SSH_CLIENT=192.168.65.201 61219 22
MAIL=/var/mail/groovy
XDG_SESSION_COOKIE=dfcaf79689d1bcd60839098c00000003-1322252721.876800-443142306
USER=groovy
PWD=/home/groovy
HOME=/home/groovy
LOGNAME=groovy
SSH_ORIGINAL_COMMAND=hogehoge
_=/home/groovy/env.groovy
SSH_CONNECTION=192.168.65.201 61219 192.168.65.205 22
LD_LIBRARY_PATH=/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client:/usr/lib/jvm/java-6-openjdk/jre/lib/i386:/usr/lib/jvm/java-6-openjdk/jre/../lib/i386
LANG=en_US.UTF-8

SSH_ORIGINAL_COMMANDってとこに色々引数の情報とか入るようで。