通过SSH协议给python多进程转发按键

在SSH环境中,处理远程按键输入是个挑战。本文探讨了不同工具如signal、xdotool、termios、pynput和keyboard的限制。其中,尽管OpenCV的按键检测能在SSH下工作,但需GUI界面运行。另外,x2x被提出作为可能的替代方案进行尝试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前没有很好的工具,几种方案比较:

signal:只能处理ctrl+c等少量按键。可以处理quit信号

xdotool:在ssh环境下工作不是很好,需要设置DISPLAY='0.0',但我设了不起作用。报 

 No protocol specified
Error: Can't open display: (null)
Failed creating new xdo instance

的错

termios:需要终端环境

pynput:无法通过SSH协议转发按键,只能走rdp、VNC(可能也是基于RDP)

keyboard:root权限

 

通过实测,基于OpenCV的按键检测方法是可以通过SSH协议转发的,但是需要在程序有GUI界面在运行的条件下才能生效。

import cv2

k = cv2.waitKey(1)
if k == 27 or k == ord('q'): # Esc or 'q'
     global_break = True

 

其他待尝试:

x2x

https://www.kutu66.com/ubuntu/article_165205

### 问题分析 在Windows终端通过SSH连接到云服务器时遇到无法输入密码的情况,可能是由于多种因素引起的。以下是可能导致此问题的原因以及相应的解决方案。 --- ### 可能原因及解决方案 #### 1. **键盘布局不匹配** 如果本地计算机的键盘布局与目标服务器的操作系统默认键盘布局不同,则可能出现按键映射错误的现象,从而导致看似“无法输入密码”的情况。 - 解决方法:确认并调整本地系统的键盘布局为标准美式英语(US English)。可以通过以下命令测试: ```bash echo "Testing keyboard layout" ``` 如果发现特殊字符键位异常,则需更改本地键盘配置[^1]。 #### 2. **SSH客户端版本兼容性问题** 某些旧版OpenSSH客户端可能存在与现代Linux发行版上的SSH守护进程之间的协议冲突,这会阻止正常的认证流程完成。 - 推荐升级至最新稳定发布的OpenSSH Client工具包,并验证其功能是否恢复正常工作状态[^2]: - Windows PowerShell 中运行更新指令: ```powershell winget upgrade --id=OpenSSL.OpenSSL ``` #### 3. **SSH服务端未启用PasswordAuthentication** 部分安全强化后的Linux主机禁用了基于口令的身份验证方式转而强制使用公钥加密机制来提高安全性级别。这种情况下即使提供了正确的用户名/密码组合也无法实现登录过程。 - 修改`/etc/ssh/sshd_config` 文件中的参数设置允许密码登陆模式再次生效[^3]: ```conf PasswordAuthentication yes ChallengeResponseAuthentication no UsePAM yes PermitRootLogin prohibit-password AuthorizedKeysFile .ssh/authorized_keys ``` 配置完成后记得重启SSH服务应用变更效果: ```bash sudo systemctl restart sshd ``` #### 4. **网络延迟或数据包丢失引起交互失败** 高延时或者不稳定的数据链路环境也可能造成用户感觉像是被锁定住了一样——实际上只是等待超时而已。 - 尝试增加TCP KeepAlive时间间隔以减少断开重连频率的同时也给予更多耐心给整个握手阶段得以顺利完成: ```bash ServerAliveInterval 60 TCPKeepAlive yes ``` 以上提到的所有改动都需要管理员权限才能执行;另外值得注意的是,在做任何修改之前最好先备份原始配置以防万一出现问题可以迅速恢复原状。 --- ### 总结 针对Windows终端SSH连接云服务器过程中出现的“无法输入密码”现象,应依次排查上述几个方面的问题根源所在,并采取相应措施加以纠正。通常来说经过适当调试之后应该能够顺利解决问题达成预期目的。 ```python print("If all methods fail, consider using an alternative client such as PuTTY.") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值