我正在尝试以非交互方式向 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 在运行之前是交互的。