[gvfs] gvfs-test: Use local sshd configuration and host keys



commit 582c311ed0ff0306e5be854e9d4f5a0761342d61
Author: Martin Pitt <martinpitt gnome org>
Date:   Mon Oct 15 12:47:12 2012 +0200

    gvfs-test: Use local sshd configuration and host keys
    
    Stop relying on the system sshd configuration and calling sshd-keygen on the
    fly, as this is not reliable across distributions. Just ship a local test host
    key and generate a complete (but minimal) sshd config on the fly.

 test/files/ssh_host_rsa_key     |   27 +++++++++++++++++++++++++++
 test/files/ssh_host_rsa_key.pub |    1 +
 test/gvfs-test                  |   32 +++++++++++++++++++++++++++++---
 3 files changed, 57 insertions(+), 3 deletions(-)
---
diff --git a/test/files/ssh_host_rsa_key b/test/files/ssh_host_rsa_key
new file mode 100644
index 0000000..a008702
--- /dev/null
+++ b/test/files/ssh_host_rsa_key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAxwiVF/v2bLvyBsPdVH61MasDGLAK0n93vzYdiDffrb99/t+B
+qi4gOtXbF5dV8RZ9kxA26m2an0fLL3YUEWwltp0s/jUjY2h01hVXnWxmKpdSocsM
+h6T8xhmh0FJuumsKDiZ0OUHwQt8eLhWO3nMJG67Fu33xCPElD3lgDAOaq7vu7UnM
+4ko2f8P1jFt7gIKTwp/E3heogbtQ5/jm9DDLFqB2DW/udPFi96hDKSQKv/RGN4Oy
+CIsNwu9YFoBBYsatYjd4s5BBR6HKr8qZT5QZw382pHz35zOG+JrtP+bzwnJEKB+x
+y5FDWEfbQkh2sxTYJT16NsiYhRXsiMJeCrvUQQIDAQABAoIBAFJPk1Ei62tWYqY3
+lC3gZNDQl2w7SY56FqymFZqC+Oci/VlNV5Nolf2e+YeNF4antXD/UKasgziB+V58
+Z5o47nPSFoxer27qAP+UPfKlpK7Se+LbVSg3rC3E5e2AWbiQkcz+TCxtv434NcP7
+OGV4j3i6U53RXMBE8f2vRXBSgUGpsUvlOaiDQIuS9oh16r62D7+X/oerci2usdU4
+Jn1zE2TE0QfroyPUzYsP4WeRGVBVKDfpmdheR8VWwUO38r+1HCKEgDIxqPQbSXsf
+1ZR2yLOaW0u8SudA6fTEYtVEZbSMfGmfEanwDtrCzY3Qig5v6TGCDzBHsoaxLKVN
+t7V+LS0CgYEA5p4edPH13ufDUSFyIwRc51kpeTpRZrVcYVUOFeZHduMGdq5xpzQ2
+OXVd4B2wSSS8VZ4JRPxXdseiAg6hwc8epCmjnUGGhz35d4LlFdDVQvBE46yqInsl
+qE1jgpcURgPPk79IYDwZ54ugbfu59mir5r3J/SZIFaOjfz7lJ13E+vsCgYEA3PCM
+oFwJaS7NwjRehiD9r8JHsyyq5R5NRwVK13/6kX6bGsPuM5yA7WsUQCiRVy4tAZnF
+0mNfVJCZ8UC1t8o28nhup3+ViW8DrPz+5XhM2/9gFBkpEvQ7HveNJbYBssn/H2R9
+26mJzrlSiaJsFUiMq04zeFt/+/B1aJIb4k6RSPMCgYBPSoxEPzD/PAZuraY1nfln
+XcOht8hnHPIvUPQv2WY23SXKxn2zNIN0TAND3FFRRL0wXs7nFi/oWgk81dUN8u2h
+GeP0XKQpech9K9ciIhRBGKVG9oXkpxyyejE9pD5HOGY1cW4sEF4Du4Ekb4lnzGNW
+SWjajj/4mLPNO03EtDvW4wKBgQCuoDYWHQiXKRYaFDhNvU+llmIDXR+pvhyIMMep
+so6CZtYC/q+L/Xvtqz+zQh02EdoitL6lfkN/3FbAV0wJevuZA9U58F5p5OO7269A
+AaiGDb+LwyMyxvTfkfvuvX90J7HMxymu775rNRDmlgjlfZUpZMLLs05h+/lgcHM3
+mK++PwKBgCgazLL2pg0Dg+oPg1kD2u9ROzlUA4Q5zpqk4cD5NUL+ssYLjjVIqn9j
+HwbtRA+B+SitS2NTI+zV9vAAsTKW1ch5VovTT/Xm6K1fJLx2qqF3UJUFETFrEYAW
+wYX769NzYh2y88I+XKYKXOOiyxWSS7EDkzpCVF+DunGks/qsGB33
+-----END RSA PRIVATE KEY-----
diff --git a/test/files/ssh_host_rsa_key.pub b/test/files/ssh_host_rsa_key.pub
new file mode 100644
index 0000000..12ffaa1
--- /dev/null
+++ b/test/files/ssh_host_rsa_key.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHCJUX+/Zsu/IGw91UfrUxqwMYsArSf3e/Nh2IN9+tv33+34GqLiA61dsXl1XxFn2TEDbqbZqfR8svdhQRbCW2nSz+NSNjaHTWFVedbGYql1KhywyHpPzGGaHQUm66awoOJnQ5QfBC3x4uFY7ecwkbrsW7ffEI8SUPeWAMA5qru+7tScziSjZ/w/WMW3uAgpPCn8TeF6iBu1Dn+Ob0MMsWoHYNb+508WL3qEMpJAq/9EY3g7IIiw3C71gWgEFixq1iN3izkEFHocqvyplPlBnDfzakfPfnM4b4mu0/5vPCckQoH7HLkUNYR9tCSHazFNglPXo2yJiFFeyIwl4Ku9RB root localhost
diff --git a/test/gvfs-test b/test/gvfs-test
index 91cd48e..a5b3db4 100755
--- a/test/gvfs-test
+++ b/test/gvfs-test
@@ -248,10 +248,36 @@ class Sftp(GvfsTestCase):
 
         super().setUp()
 
+        # find sftp-server
+        for dir in ['/usr/local/lib/openssh',
+                    '/usr/lib/openssh',
+                    '/usr/local/libexec/openssh',
+                    '/usr/libexec/openssh']:
+            sftp_server = os.path.join(dir, 'sftp-server')
+            if os.path.exists(sftp_server):
+                break
+        else:
+            self.fail('Cannot locate OpenSSH sftp-server program, please update tests for your distribution')
+
+        # generate sshd configuration; note that we must ensure that the
+        # private key is not world-readable, so we need to copy it
+        shutil.copy(os.path.join(my_dir, 'files', 'ssh_host_rsa_key'), self.workdir)
+        os.chmod(os.path.join(self.workdir, 'ssh_host_rsa_key'), 0o600)
+        shutil.copy(os.path.join(my_dir, 'files', 'ssh_host_rsa_key.pub'), self.workdir)
+
+        self.sshd_config = os.path.join(self.workdir, 'sshd_config')
+        with open(self.sshd_config, 'w') as f:
+            f.write('''Port 2222
+HostKey %(workdir)s/ssh_host_rsa_key
+UsePrivilegeSeparation no
+UsePam no
+Subsystem sftp %(sftp_server)s
+''' % {'workdir': self.workdir,
+       'sftp_server': sftp_server
+      })
+
         self.sshd_log = open('/var/log/sshd.log', 'ab')
-        self.sshd = subprocess.Popen([os.environ['SSHD'], '-Dde', '-p', '2222',
-                                      '-o', 'UsePrivilegeSeparation no',
-                                      '-o', 'UsePam no'],
+        self.sshd = subprocess.Popen([os.environ['SSHD'], '-Dde', '-f', self.sshd_config],
                                      stderr=self.sshd_log)
 
     def tearDown(self):



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]