}
if(!$run{'socks'}) {
my $sshversion=`ssh -V 2>&1`;
- if ($sshversion =~ /SSH_(\d+)\.(\d+)/i) {
- if ($1*10+$2 < 37) {
- # need 3.7 for socks5 - http://www.openssh.com/txt/release-3.7
- return "ssh version ($1.$2) insufficient; need at least 3.7";
- }
- } else {
+ if($sshversion =~ /OpenSSH[_-](\d+)\.(\d+)/i) {
+ if ($1*10+$2 < 36) {
+ # need 3.7 for socks5 - http://www.openssh.com/txt/release-3.7
+ return "OpenSSH version ($1.$2) insufficient; need at least 3.7";
+ }
+ }
+ elsif($sshversion =~ /Sun[_-]SSH[_-](\d+)\.(\d+)/i) {
+ if ($1*10+$2 < 11) {
+ return "SunSSH version ($1.$2) insufficient; need at least 1.1";
+ }
+ }
+ else {
return "Unsupported ssh client\n";
}
($ssh_ver_major, $ssh_ver_minor, $ssh_ver_patch) = ($1, $2, $4);
$ssh_daemon = 'OpenSSH';
}
+if(!$ssh_daemon) {
+ chomp($tmpstr = qx($sshd -V 2>&1 | grep Sun_SSH));
+ if($tmpstr =~ /Sun[_-]SSH[_-](\d+)\.(\d+)/) {
+ ($ssh_ver_major, $ssh_ver_minor) = ($1, $2);
+ $ssh_daemon = 'SunSSH';
+ }
+}
if ($verbose) {
print STDERR "ssh_daemon: $ssh_daemon\n";
print STDERR "ssh_ver_major: $ssh_ver_major\n";
print STDERR "ssh_ver_patch: $ssh_ver_patch\n";
}
-# Verify minimum OpenSSH version.
-if (($ssh_daemon !~ /OpenSSH/) || (10 * $ssh_ver_major + $ssh_ver_minor < 37)) {
- if(!$ssh_daemon) {
- print "SSH server daemon found is not an OpenSSH daemon\n";
- chomp($tmpstr = qx($sshd -V 2>&1));
- print "$tmpstr\n";
- }
- else {
- print "SSH server daemon found is OpenSSH $ssh_ver_major.$ssh_ver_minor\n";
- }
+# Verify minimum SSH daemon version.
+my $sshd_ver_ok = 1;
+if(($ssh_daemon =~ /OpenSSH/) && (10 * $ssh_ver_major + $ssh_ver_minor < 36)) {
+ print "SSH server daemon found is OpenSSH $ssh_ver_major.$ssh_ver_minor\n";
+ $sshd_ver_ok = 0;
+}
+if(($ssh_daemon =~ /SunSSH/) && (10 * $ssh_ver_major + $ssh_ver_minor < 11)) {
+ print "SSH server daemon found is SunSSH $ssh_ver_major.$ssh_ver_minor\n";
+ $sshd_ver_ok = 0;
+}
+if(!$ssh_daemon) {
+ print "SSH server daemon found is not OpenSSH nor SunSSH\n";
+ chomp($tmpstr = qx($sshd -V 2>&1));
+ print "$tmpstr\n";
+ $sshd_ver_ok = 0;
+}
+if(!$sshd_ver_ok) {
print "SCP, SFTP and SOCKS tests require OpenSSH 3.7 or later\n";
exit 1;
}