如何将参数传递给SSH命令?

时间:2011-07-14 08:15:12

标签: linux ssh ssh-keys

我配置一个ssh命令键,如(在远程mashine M1中):

command="/usr/bin/nslookup",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss DEADBEEFDEADBEEF= mycow@farm.org

允许从客户端计算机C1在M1中运行nslookup。它有效,我可以运行:

C1> ssh -i mylookup_key M1

我在M1上执行nslookup,但我需要传递参数才能获得真正的工作。如何将参数传递给ssh命令键?

p.d:我正在使用nslookup作为我想要执行的真实程序的一个例子。

3 个答案:

答案 0 :(得分:5)

查看$SSH_ORIGINAL_COMMAND变量,该变量应包含传递给ssh的命令。例如:

command="/usr/bin/nslookup $SSH_ORIGINAL_COMMAND",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-dss DEADBEEFDEADBEEF= mycow@farm.org

然后尝试:

$ ssh -i mylookup_key M1 stackoverflow.com

答案 1 :(得分:0)

您是否尝试将命令括在'"中?像

这样的东西
ssh host "ls -l -a .."

给了我

total 12
drwxr-xr-x  3 root  root  4096 2011-06-16 12:33 .
drwxr-xr-x 22 root  root  4096 2011-06-16 13:40 ..
drwxr-xr-x 49 mihai mihai 4096 2011-07-14 10:33 mihai

意味着它有效

答案 2 :(得分:0)

如果我理解正确,您只想在远程计算机上运行命令。 简单的情况是将命令作为最后一个参数传递给ssh

ssh -i mylookup_key M1 nslookup stackoverflow.com

但是你可能需要小心引用和特殊字符。 e.g。

ssh -i mylookup_key M1 ./args.sh "1 2 3"
PROG:./args.sh
ARG[1]: 1
ARG[2]: 2
ARG[3]: 3
ssh -i mylookup_key M1 ./args.sh '"1 2 3"'
PROG:./args.sh
ARG[1]: 1 2 3