【问题标题】:Net::SSH::Win32Perl hangsNet::SSH::Win32Perl 挂起
【发布时间】:2012-04-09 21:17:58
【问题描述】:

您好,我正在尝试在 windows xp 机器上的 unix 机器上做一个简单的 ls。它挂起并且不退出。可能是什么问题

 use Net::SSH::W32Perl;
 use diagnostics;

    my $host = 'host';
    my $ssh = new Net::SSH::W32Perl($host, debug => 1);
    $ssh->login('username', 'password');
    my $cmd = "ls";
    my($stdout, $stderr, $exit) = $ssh->cmd($cmd);
    print "$stdout";
    exit;

下面是输出,注意它已经能够使用密码验证登录,但它不能给出输出。这是为什么呢?

>  C:\>perl winssh.pl
>     WXVM0026: Reading configuration data c:\/.ssh/config
>     WXVM0026: Reading configuration data /etc/ssh_config
>     WXVM0026: Connecting to hp-test, port 22.
>     WXVM0026: Socket created, turning on blocking...
>     WXVM0026: Remote protocol version 2.0, remote software version OpenSSH_4.3p2-hpn
>     WXVM0026: Net::SSH::Perl Version 1.34, protocol version 2.0.
>     WXVM0026: No compat match: OpenSSH_4.3p2-hpn.
>     WXVM0026: Connection established.
>     WXVM0026: Sent key-exchange init (KEXINIT), wait response.
>     WXVM0026: Algorithms, c->s: 3des-cbc hmac-sha1 none
>     WXVM0026: Algorithms, s->c: 3des-cbc hmac-sha1 none
>     WXVM0026: Entering Diffie-Hellman Group 1 key exchange.
>     WXVM0026: Sent DH public key, waiting for reply.
>     WXVM0026: Received host key, type 'ssh-dss'.
>     WXVM0026: Host 'hp-test' is known and matches the host key.
>     WXVM0026: Computing shared secret key.
>     WXVM0026: Verifying server signature.
>     WXVM0026: Waiting for NEWKEYS message.
>     WXVM0026: Send NEWKEYS.
>     WXVM0026: Enabling encryption/MAC/compression.
>     WXVM0026: Sending request for user-authentication service.
>     WXVM0026: Service accepted: ssh-userauth.
>     WXVM0026: Trying empty user-authentication request.
>     WXVM0026: Authentication methods that can continue: publickey,password,keyboard-interactive.
>     WXVM0026: Next method to try is publickey.
>     WXVM0026: Next method to try is password.
>     WXVM0026: Trying password authentication.
>     WXVM0026: Login completed, opening dummy shell channel.
>     WXVM0026: channel 0: new [client-session]
>     WXVM0026: Requesting channel_open for channel 0.
>     WXVM0026: channel 0: open confirm rwindow 0 rmax 32768
>     WXVM0026: Got channel open confirmation, requesting shell.
>     WXVM0026: Requesting service shell on channel 0.
>     WXVM0026: channel 1: new [client-session]
>     WXVM0026: Requesting channel_open for channel 1.
>     WXVM0026: Entering interactive session.
>     WXVM0026: Sending command: ls
>     WXVM0026: Sending command: ls
>     WXVM0026: Requesting service exec on channel 1.
>     WXVM0026: channel 1: send eof
>     WXVM0026: channel 1: open confirm rwindow 2097151 rmax 32768
>     WXVM0026: input_channel_request: rtype exit-status reply 0
>     WXVM0026: channel 1: rcvd eof
>     WXVM0026: channel 1: output open -> drain
>     WXVM0026: channel 1: rcvd close

【问题讨论】:

  • 你使用的是什么版本的 perl? code.activestate.com/ppm/Net-SSH-W32Perl 表示该软件包不适用于任何最新版本...我建议从 winnipeg 获取 Net::SSH2
  • 感谢 Andrew,使用 Net::SSH2 可以正常工作。感谢您的帮助

标签: windows perl ssh


【解决方案1】:

我最近遇到了同样的问题。 I found a solution in PerlMonks 这就是我如何让它为我工作的方法。

  1. 确保您设置了 $ENV{HOME} 环境变量(如果未设置)。 Net::SSH 将在那里查找配置项。
  2. 在 Net/SSH/Perl.pm 中,注释掉第 49 和 50 行并用my $proto_class = $ssh->protocol_class($proto); 替换它们

【讨论】:

  • 乔尔,感谢您的帮助。我不喜欢执行上述操作,因为我必须在每个安装上都执行相同的操作。我使用 Net::SSH2 得到了这个东西
猜你喜欢
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多