1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/usr/bin/perl use strict; use warnings; use 5.010; system('cls'); require Net::SSH2; my $ssh2 = Net::SSH2->new(); $ssh2->connect('server .com') or $ssh2->die_with_error; $ssh2->auth_password('user','pw') or $ssh2->die_with_error; my $chan = $ssh2->channel() or $ssh2->die_with_error; $chan->exec("cd /www/verz"); $chan->exec("ls"); print while <$chan>; print "EXIT CODE: ",$chan->exit_status,"\n"; $chan->close;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#!/usr/bin/perl use strict; use warnings; use 5.010; system('cls'); require Net::SSH::Perl; my %params = (protocol => 2); my $ssh = Net::SSH::Perl->new('server .com',%params); $ssh->login('user','pw'); my ($out,$err,$exit); ($out,$err,$exit) = $ssh->cmd('cd /www/verz'); say '-' x 80; say __LINE__; say "\$out = '$out'"; say "\$err = '$err'"; say "\$exit = '$exit'"; ($out,$err,$exit) = $ssh->cmd('dir'); say '-' x 80; say __LINE__; say "\$out = '$out'"; say "\$err = '$err'"; say "\$exit = '$exit'";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Configuring R/RK/RKITOVER/Net-SSH2-0.71.tar.gz with Makefile.PL
The libssh2 library is required by this module. If you don't have it, you can
download it from http://www.libssh2.org; you may also need OpenSSL, which can
be obtained from http://www.openssl.org , or libgcrypt, which can be obtained
from http://www.gnupg.org .
Debian: sudo aptitude install libssh2-1-dev
OpenSUSE: sudo zypper in libssh2-1 libssh2-devel
You can pass your libssh2 lib and include dirs (and extra link args) on the
command line. E.g.:
perl Makefile.PL lib=$HOME/libssh2/lib inc=$HOME/libssh2/include \
ldargs="-lz"
These can also be set through the LIBSSH2_LIB/LIBSSH2_INCLUDE/LIBSSH2_LDARGS
environment variables.
To build with libgcrypt instead of OpenSSL, pass 'gcrypt' as a parameter to
Makefile.PL, e.g.:
perl Makefile.PL gcrypt
Looking for libraries...
Analyzing file assertlibMf9bpvzG.exe
Unable to find a working version of library z in the following directories:
C:\strawberry\perl\site
C:\strawberry\perl
/usr
/usr/local
/opt
/opt/local
/usr/local/libssh2
/opt/libssh2
/usr/local/ssl
Warning: No success on command[C:\strawberry\perl\bin\perl.exe Makefile.PL]
RKITOVER/Net-SSH2-0.71.tar.gz
C:\strawberry\perl\bin\perl.exe Makefile.PL -- NOT OK
Stopping: 'install' failed for 'Net::SSH2'.
Failed during this command:
RKITOVER/Net-SSH2-0.71.tar.gz : writemakefile NO 'C:\strawberry\perl\bin\perl.exe Makefile.PL' returned status 512
2020-08-04T09:10:06 GwenDragonHol dir mal: http://strawberryperl.com/package/kmx/perl-modules... und schau dir die BUILDING.WIN32 an.
Quote* Build libssh2
Download the latest libssh2 from:
http://libssh2.org/
Unpack it and go into it:
tar zxvf libssh2-1.4.2.tar.gz
cd libssh2-1.4.2
Note the directories where you built OpenSSL and zlib, I will use mine in the
following example.
Build libssh2:
./buildconf
./configure --with-openssl --with-libz \
--with-libssl-prefix=/c/Users/rkitover/src/openssl-1.0.1c \
--with-libz-prefix=/c/Users/rkitover/src/zlib-1.2.7 \
--disable-examples-build
make -j3
The libssh2.a will be in src/.libs .
2020-08-05T07:15:28 biancaUngetestet: Installiere die unterschiedlichen Perl als Strawberry Portable-version in zwei verschiedene Verzeichnisse.@GwenDragon: kann man auf ein und derselben Windows-Apache Instanz für zwei verschiedene Webseiten unterschiedliche Strawberry Versionen verwenden? Dann könnte ich nämlich für die Produktivseite ein neueres Perl nehmen ohne die Test-/Entwicklungsseite zu ändern und hätte das Problem auch gelöst.
Du hattest da eine FAQ oder ähnliches mal gemacht, wenn ich das richtig weiß?
1
2
3
4
C:\temp\strawberry-perl-5.18.4.1-32bit.zip\perl\vendor\lib\Net\SSH2.pm
C:\temp\strawberry-perl-5.18.4.1-32bit.zip\perl\vendor\lib\Net\SSH2\Channel.pm
C:\temp\strawberry-perl-5.18.4.1-64bit.zip\perl\vendor\lib\Net\SSH2.pm
C:\temp\strawberry-perl-5.18.4.1-64bit.zip\perl\vendor\lib\Net\SSH2\Channel.pm
2020-08-05T12:11:49 LinuxerJa es ist 5.18.4.1Welche Strawberry Perl Version hast Du genau? Wirklich 5.18.4 oder eine 5.18.4.1?
Quote-5 / LIBSSH2_ERROR_KEX_FAILURE / Unable to exchange encryption keys
1
2
3
no matching mac found:
client hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
server hmac-sha2-256
2020-08-05T14:27:25 LinuxerDie Informationsbasis ist sehr dürftig.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
libssh2_channel_open_ex(ss->session, mandatory_type, strlen(mandatory_type), window_size, packet_size, ((void *)0) , 0 ) -> 0x30aff18
Net::SSH2::Channel::read(size = 32678, ext = 0)
- read -37 bytes
- read 0 total
Net::SSH2::Channel::read(size = 32678, ext = 1)
- read -37 bytes
- read 0 total
Net::SSH2::Channel::read(size = 32678, ext = 0)
- read 8 bytes
- read 0 bytes
- read 8 total
Net::SSH2::Channel::read(size = 32678, ext = 1)
- read 0 bytes
- read 0 total
libssh2_channel_open_ex(ss->session, mandatory_type, strlen(mandatory_type), window_size, packet_size, ((void *)0) , 0 ) -> 0x30afc48
Net::SSH2::Channel::read(size = 32678, ext = 0)
- read -37 bytes
- read 0 total
Net::SSH2::Channel::read(size = 32678, ext = 1)
- read -37 bytes
- read 0 total
Net::SSH2::Channel::read(size = 32678, ext = 0)
- read 0 bytes
- read 0 total
Net::SSH2::Channel::read(size = 32678, ext = 1)
- read 78 bytes
- read 0 bytes
- read 78 total
Net::SSH2::Channel::DESTROY
Net::SSH2::Channel::DESTROY
Net::SSH2::DESTROY object 0x34e2488
2020-08-05T14:27:25 LinuxerDie Informationsbasis ist sehr dürftig. Ist das die gesamte Ausgabe?
1 2 3 4 5 6 7 8 9 10 11 12
#!/usr/bin/perl use strict; use warnings; use 5.010; require Net::SSH2; my %opts = ( debug => 1, trace => -1, ); my $ssh2 = Net::SSH2->new(%opts); $ssh2->connect('sshserver .com') or die join(' / ',$ssh2->error);
Quote-5 / LIBSSH2_ERROR_KEX_FAILURE / Unable to exchange encryption keys at test_ssh2.pl line 12.
2020-08-05T14:27:25 LinuxerGibt es einen höheren Level als in der Doku steht oder habe ich es überlesen?Ansonsten schau mal, ob Du den Debug-Level erhöhen kannst und so mehr Output erzeugen kannst.
2020-08-05T14:27:25 LinuxerWie können wir das verifizieren?Meine Vermutung geht momentan in die Richtung, dass die SSH-Versionen von Client (Perl's Net::SSH2) und Server (unbekannt) zu weit auseinander liegen und die beiden keine gemeinsame Teilmenge in den Algorithmen für den Key-Austausch finden.
2020-08-05T14:27:25 LinuxerMehr habe ich bis jetzt nicht, bitte aber trotzdem um Hilfe.Ob das hier bei Dir so ein Fall ist, kann ich anhand der gelieferten Daten allerdings nicht erraten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#! /usr/bin/perl use strict; use warnings; use 5.020; require Net::SSH2; my %opts = ( debug => 1, trace => -1, ); warn "Net::SSH2 Version: ", Net::SSH2->VERSION, "\n"; my $ssh2 = Net::SSH2->new(%opts); $ssh2->connect('sshserver') or die $ssh2->error(); $ssh2->auth_keyboard( 'benutzer', 'passwort', ) or die $ssh2->error(); my $chan = $ssh2->channel() or die $ssh2->error(); $chan->exec('ls'); print while <$chan>; print "EXIT CODE: ", $chan->exit_status, "\n";