2012-04-30 66 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。但事實並非如此。