簡體   English   中英

通過ssh在遠程執行命令不起作用

[英]Executing a command on remote via ssh doesn't work

我正在嘗試使用ssh在遠程服務器上執行命令。 命令是

ssh machine -l user "ls"

這個命令卡在兩者之間,最后我們必須暫停它。

但是,執行命令ssh machine -l user工作正常,這個命令使我們連接到遠程機器。

有人可以幫助解決為什么遠程服務器上的ls無法通過ssh工作的根本原因。

編輯1:這是使用-v開關和SSH后的輸出

debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending command: ls

打印Sending command: ls終端卡住了。

我懷疑發生了兩件事之一。 首先,可以將ssh服務器設置為為用戶啟動特定命令,而不管您要求運行什么命令。 例如,如果用戶被限制為以通常的方式運行SFTP,則會看到此行為。 有兩種方法可以設置:

  1. 遠程服務器的sshd配置文件中的ForceCommand指令。
  2. 遠程用戶的authorized_keys文件中的指令,用於正在使用的密鑰。

檢查這個的最簡單方法是登錄到遠程服務器並檢查這兩個文件。 或者,您可以啟動其中一個ssh會話,讓它掛起,然后在遠程服務器上運行“ps”以查看正在為相關用戶運行的實際進程。

另一種可能性是遠程用戶在他的.bashrc或其他shell啟動腳本中有一行,它引入了等待或者等待你輸入內容。 同樣,您應該啟動其中一個ssh會話,讓它掛起,然后在遠程服務器上運行“ps”以查看為用戶運行的實際進程。

問題:問題是在命令行上還是在腳本中出現? 你被提示你的passowrd? 有沒有輸出? 如果是,請在此處發布。

並嘗試

ssh -v user@host "ls"

要么

ssh -v -l user host "ls"

你會得到額外的輸出。 您可以使用-v選項最多3次以獲得更高的詳細程度。

ssh -vvvl user host "ls"

編輯:

如果我必須調試這個,我會做以下事情:

  • 轉到目標機器,你想要'ssh'到的那台機器。
  • 使用您嘗試使用ssh的同一用戶登錄
  • 輸入“ls”命令“

這是一個不尋常的事情,但'ls'不一定是你所期望的。 在目標計算機的命令行上,嘗試

which ls

然后使用帶有ssh調用的完全限定名稱的輸出,例如:

ssh machine -l user "/bin/ls"

請記住,當通過ssh激活命令時,您不會自動擁有與常規登錄相同的路徑。

最后,檢查目標計算機上的日志文件。 它們通常位於/ var / log下(至少在debian下)。

EDIT2:

在linux機器上,我有時遇到'ls'命令掛起而沒有任何輸出的問題。 當目錄中的文件系統以某種方式“無效”時,就會發生這種情況。 例如,如果有一個無效的安裝android mtpfs,那么ls命令無法處理並掛起。

所以試着'ls'一個不同的目錄,例如

ssh host -l user "ls /tmp"

如果這樣可行,則從命令行檢查是否存在某個目錄或文件,其中某些無效狀態會導致ls命令失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM