SSH 远程执行 - 检查服务器可以吗?

SSH 远程执行 - 检查服务器可以吗?

我有一个可以通过 SSH 进行管理的嵌入式设备(Perle IOLAN+,以太网转串行适配器)。有时,我需要登录并在此设备上执行命令。通过 SSH 登录、获取交互式 shell 并运行命令都很顺利并且运行良好。

但是,我想自动化该过程,并在我的服务器上有一个脚本登录并定期为我运行此命令。我正在测试是否可以通过 SSH 远程执行,但似乎不能。

我想要运行的命令是kill line *.在我的服务器上,我尝试ssh user@device_host kill line *。但预期的结果并没有发生。当我尝试时,ssh user@device_host uptime我没有得到任何输出,即使uptime在设备的交互式 shell 中工作正常。

该设备没有运行完整、正常的操作系统 - 它是某种嵌入式、精简的 *nix,只有很少的可用命令。我想知道它的 SSH 服务器是否可能无法识别远程命令执行。有什么方法可以检查吗?精简版 SSH 服务器是否经常缺乏此功能?

是否有另一种方法可以在不通过交互式 shell 的情况下远程执行命令?

ssh 与 -vv 的输出是:

$ ssh -vv user@remote_host 正常运行时间
OpenSSH_6.4、OpenSSL 1.0.1e-fips 2013 年 2 月 11 日
debug1:读取配置数据/etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config 第 51 行:应用 * 的选项
调试2:ssh_connect:needpriv 0
debug1:连接到remote_host [remote_host]端口22。
debug1:连接已建立。
debug1:身份文件 /home/raven/.ssh/id_rsa 类型 -1
debug1:身份文件 /home/raven/.ssh/id_rsa-cert 类型 -1
debug1:身份文件 /home/raven/.ssh/id_dsa 类型 -1
debug1:身份文件 /home/raven/.ssh/id_dsa-cert 类型 -1
debug1:身份文件 /home/raven/.ssh/id_ecdsa 类型 -1
debug1:身份文件 /home/raven/.ssh/id_ecdsa-cert 类型 -1
debug1:启用协议2.0的兼容模式
debug1:本地版本字符串SSH-2.0-OpenSSH_6.4
debug1:远程协议版本2.0,远程软件版本OpenSSH_5.9
debug1:匹配:OpenSSH_5.9 pat OpenSSH_5*
debug2: fd 3 设置 O_NONBLOCK
debug1:SSH2_MSG_KEXINIT 已发送
debug1:收到 SSH2_MSG_KEXINIT
调试2:kex_parse_kexinit:
---- 被剪断 - 很多 kexinit 消息 ----
debug2:kex_parse_kexinit:first_kex_follows 0
debug2: kex_parse_kexinit: 保留 0
debug2: mac_setup: 找到 hmac-md5
debug1: kex: 服务器->客户端 aes128-cbc hmac-md5 无
debug2: mac_setup: 找到 hmac-md5
debug1: kex: 客户端->服务器 aes128-cbc hmac-md5 无
debug1:发送 SSH2_MSG_KEX_ECDH_INIT
debug1:期待 SSH2_MSG_KEX_ECDH_REPLY
debug1:服务器主机密钥:RSA 6c:4c:41:a3:d2:04:66:a1:e8:66:2d:35:4c:79:6a:98
debug1:主机“remote_host”已知并且与 RSA 主机密钥匹配。
debug1:在 /home/raven/.ssh/known_hosts:4 中找到密钥
debug1:ssh_rsa_verify:签名正确
调试2:kex_derive_keys
debug2: set_newkeys: 模式 1
debug1:SSH2_MSG_NEWKEYS 已发送
debug1:期待 SSH2_MSG_NEWKEYS
debug2: set_newkeys: 模式 0
debug1:收到 SSH2_MSG_NEWKEYS
debug1:服务器不允许漫游
debug1:已发送 SSH2_MSG_SERVICE_REQUEST
debug2:service_accept:ssh-userauth
debug1:收到 SSH2_MSG_SERVICE_ACCEPT
debug2:密钥:/home/raven/.ssh/id_rsa((nil)),
debug2:密钥:/home/raven/.ssh/id_dsa((nil)),
debug2:密钥:/home/raven/.ssh/id_ecdsa((nil)),
debug1:可以继续的身份验证:公钥、密码、键盘交互
debug1:下一个身份验证方法:publickey
debug1:尝试私钥:/home/raven/.ssh/id_rsa
debug1:尝试私钥:/home/raven/.ssh/id_dsa
debug1:尝试私钥:/home/raven/.ssh/id_ecdsa
debug2:我们没有发送数据包,禁用方法
debug1:下一个身份验证方法:键盘交互
调试2:userauth_kbdint
debug2:我们发送了键盘交互数据包,等待回复
调试2:input_userauth_info_req
debug2:input_userauth_info_req:num_prompts 1
密码:
调试2:input_userauth_info_req
debug2:input_userauth_info_req:num_prompts 0
debug1:身份验证成功(键盘交互)。
已向 remote_host ([remote_host]:22) 进行身份验证。
debug1:通道 0:新 [客户端会话]
debug2: 通道 0: 发送打开
debug1:请求[电子邮件受保护]
debug1:进入交互会话。
debug2:回调开始
debug2: fd 3 设置 TCP_NODELAY
调试2:client_session2_setup:id 0
debug1:发送环境。
debug1:发送环境 LANG = en_GB.UTF-8
debug2:通道 0:请求环境确认 0
debug1:发送命令:正常运行时间
debug2:通道0:请求执行确认1
debug2:回调完成
debug2:通道 0:打开确认 rwindow 0 rmax 32768
debug2: 通道 0: rcvd 调整 2097152
debug2:channel_input_status_confirm:类型 99 id 0
debug2:在通道 0 上接受执行请求
debug1:client_input_channel_req:通道0 rtype退出状态回复0
debug1: client_input_channel_req: 通道 0 rtype[电子邮件受保护]回复 0
debug2: 通道 0: rcvd eow
debug2:通道 0:close_read
debug2:通道 0:输入打开 -> 关闭
debug2: 通道 0: rcvd eof
debug2:通道 0:输出打开 -> 漏极
debug2: 通道 0: obuf 空
debug2: 通道 0: close_write
debug2:通道 0:输出漏极 -> 关闭
debug2: 通道 0: rcvd 关闭
debug2:通道 0:几乎死了
debug2: 通道 0: gc: 通知用户
debug2: 通道 0: gc: 用户分离
debug2: 通道 0: 发送关闭
debug2: 通道 0: 已死
debug2:通道 0:垃圾收集
debug1:通道 0:空闲:客户端会话,nchannels 1
已传输:发送 2472 个字节,接收 1816 个字节,0.8 秒
每秒字节数:发送 3032.4,接收 2227.7
debug1:退出状态0

答案1

其中的ssh user@device_host kill line *“*”在发送到服务器之前由本地 shell 进行解释。您必须像这样引用命令:

ssh user@device_host 'kill line *'

相关内容