Windows上的OpenSSH服务器即使在非交互模式下也拒绝在没有STDIN
(与
this question有关)
在Windows上使用sshd服务器(Win32-OpenSSH)时(使用基于密钥的auth进行自动化),除非它具有STDIN(或PTY),否则它不起作用.例如,运行此(从Debian Jessie openssh客户端)运行正常(返回Windows用户名): ssh -4 -T -o Batchmode=yes winserver whoami 但是,这两个不会(它们只是在没有执行命令而没有返回任何输出的情况下终止): ssh -4 -T -o Batchmode=yes winserver whoami < /dev/null ssh -4 -n -T -o Batchmode=yes winserver whoami 这会产生问题,因为无法从没有打开STDIN的程序(如cron(8)或atd(8))运行非交互式ssh命令. 当使用Debian openssh服务器时,它当然可以正常工作.问题只发生在Windows ssh服务器上(Fails with Win32-OpenSSH和FreeSSHD. Bitvise SSHD但似乎工作正常,但我们正在寻找免费的Windows ssh服务器解决方案;开源,简单和维护是奖金) 这是reported,但在此期间有人有解决方案或解决方法吗?
最后,我编写了这个ssh包装器来处理有缺陷的Windows OpenSSH服务器,即使对于不使用它的非交互式命令也需要STDIN:
#!/usr/bin/perl use strict; use warnings; use Net::OpenSSH; my $HOSTNAME = shift; my $ssh = Net::OpenSSH->new($HOSTNAME); my ($in_pipe,undef,$pid) = $ssh->open_ex( { stdin_pipe => 1 },@ARGV) or die "open_ex failed: " . $ssh->error; waitpid($pid,0); 它只使用带有参数的主机名和命令来运行,不允许其他参数(我在?/ .ssh / config中设置它们),所以你运行脚本(例如)作为myssh winserver whoami<的/ dev / null的.它只是ssh客户端的一个包装器,它提供了假的STDIN,因此允许从cron(8)和atd(8)运行非交互式ssh会话 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008 – Windows 2k8 R2 – 什么是UserDN属
- 从命令行运行Elevated Powershell提示符
- .net – WindowsBase.dll中出现’System.ComponentModel.Wi
- 如何在Windows Server上安装Java 8u65?
- Windows Vista / 7:如何对输出音频混合进行采样?
- windows-phone-7 – 仅限Windows Phone 8应用程序的DeviceU
- 安装 – 在没有Windows CD的Windows 2003上安装IIS
- 在Windows Azure上更改http.sys注册表设置?
- 如何将system.serviceModel放入ServiceConfiguration.cscfg
- windows-server-2012 – Windows unattend.xml文件中“元素
- Windows批处理文件,用于在html文件中查找变量字符
- Windows – 使用PowerShell禁用自动更新
- windows – 基于Microsoft补丁发布周期的计划任务
- windows-sbs-2011 – SBS 2011“迁移后所有GC都已
- windows-server-2008 – 性能计数器警报无法正常
- windows-7 – 作为开发人员,我应该升级到Windows
- windows – 重新安装Ubuntu 9.04时如何保存设置?
- 如何在Windows中的Powershell ISE中激活自动缩进
- Windows下在eclipse中使用和操作hadoop开发,连接
- 在常规桌面计算机上运行Windows Server OS