
Я получаю доступ к удаленному хосту через jumpbox. Я могу легко получить доступ к удаленному хосту, если я получу доступ к нему через оболочку ssh:
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» или что-то подобное?
Кстати, я посмотрелКак включить использование команд на удаленном хосте по 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
Попробуйте запустить строку ssh с -t
опцией и убедитесь, что ваша удаленная команда отделена символом ', так как это указывает ssh на необходимость выполнить команду на удаленном хосте, что делает вашу строку гораздо более защищенной от ошибок.
ssh user@remoteHost -t 'ls'
К вашему сведению: опция -t включает псевдотерминальное выделение, которое фактически имитирует открытие терминала SSH, затем ввод команды, затем вывод STDOUT и выход — именно то, что вы сделали вручную, как и упомянули.
Согласно странице руководства SSH:
-t Принудительное выделение псевдотерминала. Это может быть использовано для выполнения произвольных экранных программ на удаленной машине, что может быть очень полезно, например, при реализации служб меню. Несколько опций -t принудительно выделяют tty, даже если у ssh нет локального tty.
Использованная литература: