Я пытаюсь отправить команду ssh в неинтерактивном режиме на прокси-сервер сервера автоматизации HP, и хотя я могу без проблем ввести ssh и ввести его в интерактивном режиме, я всегда получаю сообщение «Ошибка выполнения запроса на канале 0» при попытке отправить командовать не интерактивно. Могу ли я что-нибудь изменить на стороне клиента, чтобы я мог отправить команду? На стороне сервера я мало что могу изменить.
По-видимому, это возможно, но я просто не могу заставить его работать при моей установке (см. Ссылку: https://community.hpe.com/t5/Network-Automation-Practitioners/Is-there-a-way-to-issue-a-command-to-an-NA-proxy-using-SSH-non/mp/ 6935003 / выделить / ложь # M2821)
В случае, если это поможет, вот сведения о версии моей ОС и версии openssh:
OpenSSH_7.2p2, OpenSSL 1.0.2j-fips 26 Sep 2016
NAME="openSUSE Leap"
VERSION="42.2"
ID=opensuse
ID_LIKE="suse"
VERSION_ID="42.2"
PRETTY_NAME="openSUSE Leap 42.2"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:42.2"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
Спасибо
Сервер позволяет открывать интерактивную оболочку, но не exec
системный вызов для выполнения команды без псевдотерминала. Использовать -t
переключитесь следующим образом, чтобы принудительно выделить псевдотерминал.
ssh austin@127.0.0.1 -p 8022 -t show version
В качестве альтернативы используйте expect
для сценария взаимодействия с удаленной конечной точкой. Видеть этот ответ для примера.
Ссылки:
Обычно из-за того, что клиент запрашивает tty, а сервер отказывается. Попробуйте НЕ запрашивать tty с ssh -T ......
Есть ли у вас что-нибудь в rcfile вашей оболочки (.bashrc, .zshrc и т. Д.) Или .login, .profile и т. Д., Которое проверяет, является ли оболочка интерактивной перед запуском? Если нет, то в этом и заключается ваша проблема.
Мой совет - временно переименовать такие вещи, как .profile, .bashrc, .login и .bash_profile, в .profile.off (и т. Д.) И посмотреть, существует ли проблема.
Если это не так, вам понадобится код в вызывающем ошибку rcfile, который перед запуском проверит, является ли оболочка интерактивной.