导致出现“执行请求在通道 0 上失败”消息的原因是什么

导致出现“执行请求在通道 0 上失败”消息的原因是什么

我正在尝试以非交互方式向 HP 自动化服务器的代理发送 ssh 命令,虽然我可以通过 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/highlight/false#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/"

谢谢

答案1

通常是因为客户端请求 tty,而服务器拒绝。尝试不要用ssh -T ......

答案2

服务器允许您打开交互式 shell,但不允许exec系统调用来执行没有伪终端的命令。使用-t以下开关强制分配伪终端。

ssh [email protected] -p 8022 -t show version

或者,使用expect脚本与远程端点进行交互。请参阅这个答案举个例子。

参考:

答案3

您的 shell rcfile(.bashrc、.zshrc 等)或 .login、.profile 等中是否有任何内容在运行前进行检查以确保 shell 是交互式的?如果没有,那就是您的问题所在。

我的建议是暂时将 .profile、.bashrc、.login 和 .bash_profile 等重命名为 .profile.off(等等),看看问题是否仍然存在。

如果没有的话,您需要在有问题的 rcfile 中添加一些代码来检查以确保 shell 在运行之前是交互的。

相关内容