![為什麼我無法在遠端主機上執行 SSH 命令?](https://rvso.com/image/83688/%E7%82%BA%E4%BB%80%E9%BA%BC%E6%88%91%E7%84%A1%E6%B3%95%E5%9C%A8%E9%81%A0%E7%AB%AF%E4%B8%BB%E6%A9%9F%E4%B8%8A%E5%9F%B7%E8%A1%8C%20SSH%20%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我正在透過跳線盒存取遠端主機。如果透過 ssh shell 存取遠端主機,我可以輕鬆存取遠端主機:
ssh remoteHost
Last login: Tue Feb 16 12:56:26 2016 from xx.xxx.xx.xx
remoteHost:user:~$ ls
<shows all the stuff>
但是當我嘗試透過 SSH 命令列選項執行命令時,我總是得到:
ssh remoteHost ls
"ls" isn't allowed to be executed.
Killed by signal 1.
我可以成功執行 ssh 指令一些主機,但不是其他人。
這是可以在伺服器上配置的設置,即“允許遠端 ssh 命令”或類似的設置嗎?
FWIW,我確實看過如何在沒有密碼的情況下使用 ssh 在遠端主機上啟用使用指令?,但我很確定我的問題與引用無關,因為該問題的唯一答案似乎表明了這一點。
更新:
在遠端主機上,我有一個authorized_keys2 文件,其中包含如下內容:
ssh-rsa <encrypted stuff> jumpbox_user@jumpbox
ssh-rsa <encrypted stuff> jumpbox_user@mydesktop
我的 ssh/.config 檔案如下所示:
Host remoteHost
HostName remoteHost
User user
ProxyCommand ssh -W %h:%p jumpbox_user@jumpbox_host
ServerAliveInterval 60
答案1
嘗試使用該-t
選項運行您的 ssh 線路,並確保您的遠端命令由 ' 分隔,因為這告訴 ssh 在遠端主機上運行該命令,從而使您的線路更加防錯。
ssh user@remoteHost -t 'ls'
僅供參考: -t 選項啟用偽終端分配,它實際上模擬打開 SSH 終端,然後鍵入命令,然後輸出 STDOUT 並退出 - 這正是您提到的手動執行的操作。
根據 SSH 手冊頁:
-t 強制偽終端分配。這可用於在遠端電腦上執行任意基於螢幕的程序,這非常有用,例如在實現選單服務時。多個 -t 選項強制 tty 分配,即使 ssh 沒有本地 tty。
參考: