diff options
author | Dan Fandrich <dan@coneharvesters.com> | 2007-06-07 21:42:33 +0000 |
---|---|---|
committer | Dan Fandrich <dan@coneharvesters.com> | 2007-06-07 21:42:33 +0000 |
commit | 073a6cea45d52dcd02e9d35644fa6d8b05ceede9 (patch) | |
tree | 1e7e92ccc2c50c525c36735d5289ed09427ae7d5 /tests | |
parent | 345ffd11637199294baf2e461c172292a9f2f752 (diff) |
Renamed the sshd log file to sshd.log.
Added more options to the ssh config file to improve the consistency of
the test environment.
Force a rewrite of the ssh config files on every invocation.
Changed the opens to work on older versions of perl.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/sshserver.pl | 84 |
1 files changed, 50 insertions, 34 deletions
diff --git a/tests/sshserver.pl b/tests/sshserver.pl index e650e2893..a79ceb122 100644 --- a/tests/sshserver.pl +++ b/tests/sshserver.pl @@ -1,6 +1,8 @@ #/usr/bin/env perl # $Id$ -# Start sshd for use in the SCP and SFTP curl test harness tests +# Starts sshd for use in the SCP, SFTP and SOCKS curl test harness tests. +# Also creates the ssh configuration files (this could be moved to a +# separate script). # Options: # -u user @@ -113,10 +115,10 @@ if (($ssh_daemon !~ /OpenSSH/) || (10 * $ssh_ver_major + $ssh_ver_minor < 37)) { } # Initialize sshd configuration file for curl's tests. -open(my $CONF, ">$conffile") || die "Could not write $conffile"; -print $CONF "# This is a generated file! Do not edit!\n"; -print $CONF "# OpenSSH sshd configuration file for curl testing\n"; -close $CONF; +open(CONF, ">$conffile") || die "Could not write $conffile"; +print CONF "# This is a generated file! Do not edit!\n"; +print CONF "# OpenSSH sshd configuration file for curl testing\n"; +close CONF; # Support for some options might have not been built into sshd. On some # platforms specifying an unsupported option prevents sshd from starting. @@ -148,21 +150,9 @@ if (! -e "curl_client_key.pub") { system "ssh-keygen -q -t dsa -f curl_host_dsa_key -C 'curl test server' -N ''" and die "Could not generate key"; system "ssh-keygen -q -t dsa -f curl_client_key -C 'curl test client' -N ''" and die "Could not generate key"; } -# setup knownhosts -open(my $DSAKEYFILE, "<", "curl_host_dsa_key.pub") || die 'Could not read curl_host_dsa_key.pub'; -my @dsahostkey = do { local $/ = ' '; <$DSAKEYFILE> }; -close $DSAKEYFILE || die "Could not close RSAKEYFILE"; -open(my $RSAKEYFILE, "<", "curl_host_dsa_key.pub") || die 'Could not read curl_host_dsa_key.pub'; -my @rsahostkey = do { local $/ = ' '; <$RSAKEYFILE> }; -close $RSAKEYFILE || die "Could not close RSAKEYFILE"; -open(my $KNOWNHOSTS, ">>", $knownhostsfile) || die "Could not write $knownhostsfile"; -print {$KNOWNHOSTS} "[127.0.0.1]:$port ssh-dss $dsahostkey[1]\n" || die 'Could not write to KNOWNHOSTS'; -print {$KNOWNHOSTS} "[127.0.0.1]:$port ssh-rsa $rsahostkey[1]\n" || die 'Could not write to KNOWNHOSTS'; -close $KNOWNHOSTS || die "Could not close KNOWNHOSTS"; - - -open(my $FILE, ">>", $conffile) || die "Could not write $conffile"; -print $FILE <<EOFSSHD + +open(FILE, ">>", $conffile) || die "Could not write $conffile"; +print FILE <<EOFSSHD AllowUsers $username DenyUsers DenyGroups @@ -193,22 +183,13 @@ UsePrivilegeSeparation no # Newer OpenSSH options EOFSSHD ; -close $FILE || die "Could not close $conffile"; - -open(my $SSHFILE, ">>", $conffile_ssh) || die "Could not write $conffile_ssh"; -print $SSHFILE <<EOFSSH -UserKnownHostsFile $path/$knownhostsfile -IdentityFile $path/curl_client_key -EOFSSH -; -close $SSHFILE || die "Could not close $conffile_ssh"; - +close FILE || die "Could not close $conffile"; sub set_sshd_option { my ($string) = @_; - if (open(my $FILE, ">>$conffile")) { - print $FILE "$string\n"; - close $FILE; + if (open(FILE, ">>$conffile")) { + print FILE "$string\n"; + close FILE; } } @@ -222,6 +203,41 @@ if ($supports_ChReAu) { set_sshd_option('ChallengeResponseAuthentication no'); } + +# Now, set up some configuration files for the ssh client +open(DSAKEYFILE, "<", "curl_host_dsa_key.pub") || die 'Could not read curl_host_dsa_key.pub'; +my @dsahostkey = do { local $/ = ' '; <DSAKEYFILE> }; +close DSAKEYFILE || die "Could not close RSAKEYFILE"; + +open(RSAKEYFILE, "<", "curl_host_dsa_key.pub") || die 'Could not read curl_host_dsa_key.pub'; +my @rsahostkey = do { local $/ = ' '; <RSAKEYFILE> }; +close RSAKEYFILE || die "Could not close RSAKEYFILE"; + +open(KNOWNHOSTS, ">", $knownhostsfile) || die "Could not write $knownhostsfile"; +print KNOWNHOSTS "[127.0.0.1]:$port ssh-dss $dsahostkey[1]\n" || die 'Could not write to KNOWNHOSTS'; +print KNOWNHOSTS "[127.0.0.1]:$port ssh-rsa $rsahostkey[1]\n" || die 'Could not write to KNOWNHOSTS'; +close KNOWNHOSTS || die "Could not close KNOWNHOSTS"; + +open(SSHFILE, ">", $conffile_ssh) || die "Could not write $conffile_ssh"; +print SSHFILE <<EOFSSH +IdentityFile $path/curl_client_key +UserKnownHostsFile $path/$knownhostsfile +StrictHostKeyChecking no +Protocol 2 +BatchMode yes +CheckHostIP no +Compression no +ConnectTimeout 20 +ForwardX11 no +HostbasedAuthentication yes +NoHostAuthenticationForLocalhost no +# Newer OpenSSH options +#SetupTimeOut 20 +EOFSSH +; +close SSHFILE || die "Could not close $conffile_ssh"; + + if (system "$sshd -t -q -f $conffile") { # This is likely due to missing support for UsePam print "$sshd is too old and is not supported\n"; @@ -230,7 +246,7 @@ if (system "$sshd -t -q -f $conffile") { } # Start the server -my $rc = system "$sshd -e -D -f $conffile > log/ssh.log 2>&1"; +my $rc = system "$sshd -e -D -f $conffile > log/sshd.log 2>&1"; $rc >>= 8; if($rc && $verbose) { print STDERR "$sshd exited with $rc!\n"; |