2012-04-30 65 views
1

的命令:改变什么SSH远程命令将被执行

ssh [email protected] 'command1; command2' 

创建下该帐户的用户一个ssh连接到服务器,然后解释命令1;命令2下命令的bash -c,但命令:

ssh [email protected] 'command1' 

执行直接命令1。我通过实验了解到这一点,因为我无法找到这方面的信息。

我的问题是,我可以指定在解释器上使用何种解释器或使用其他参数吗?

感谢,

一个

+0

如果您在http://serverfault.com上发布该问题,您可能会有更好的运气 – Stewbob

+0

感谢您的提示。 :) – Adrian

回答

1

最广泛使用的SSH服务器是OpenSSH ssh server。它总是使用用户的shell执行客户端请求的命令。它调用这个sh语法相当于:

$SHELL -c 'the command with its arguments' 

如果你想调用备用解释器,你就必须构建一个shell命令,你想要做什么:

$ ssh localhost 'exec perl -le "print scalar localtime"' 
Mon Nov 27 11:10:33 2017 
$ 

你说运行此调用command1直接:

ssh [email protected] 'command1' 

你可能误解了什么事。如果远程用户的shell是bash,那么bash将优化这种情况,并在不创建子进程的情况下调用command1。这是bash shell(可能还有其他shell)的特殊行为,而不是OpenSSH。因此,如果您检查了远程服务器上运行的进程,它可能看起来像OpenSSH在不使用shell的情况下调用了command1。但事实并非如此。