Ejemplo n.º 1
0
    def execute(self, args, p, preargs=''):
        if runtime.platformType == 'win32':
            raise unittest.SkipTest, "can't run cmdline client on win32"
        port = self.server.getHost().port
        cmd1 = ('-p %i -l testuser '
                '--known-hosts kh_test '
                '--user-authentications publickey '
                '--host-key-algorithms ssh-rsa '
                '-a '
                '-K direct '
                '-i dsa_test '
                '127.0.0.1') % port
        cmd2 = ('-p %i -l testuser '
                '-K unix '
                '-v ') % port + preargs + \
                ' 127.0.0.1 ' + args
        cmds1 = cmd1.split()
        cmds2 = _makeArgs(cmd2.split())
        o = options.ConchOptions()

        def _(host, *args):
            o['host'] = host

        o.parseArgs = _
        o.parseOptions(cmds1)
        vhk = default.verifyHostKey
        conn = SSHTestConnectionForUnix(p, sys.executable, cmds2)
        uao = default.SSHUserAuthClient(o['user'], o, conn)
        d = connect.connect(o['host'], int(o['port']), o, vhk, uao)
        d.addErrback(lambda f: unittest.fail(
            'Failure connecting to test server: %s' % f))
        d.addCallback(lambda x: p.deferred)
        d.addCallback(lambda x: defer.maybeDeferred(conn.transport.transport.
                                                    loseConnection))
        return d
Ejemplo n.º 2
0
    def setUpClass(self):
        if hasattr(self, 'skip'):
            return
        test_process.SignalMixin.setUpClass(self)
        CFTPClientTestBase.setUpClass(self)
        self.startServer()
        cmd1 = ('-p %i -l testuser '
                '--known-hosts kh_test '
                '--host-key-algorithms ssh-rsa '
                '-a '
                '-K direct '
                '-i dsa_test '
                '127.0.0.1')
        port = self.server.getHost().port
        cmds1 = (cmd1 % port).split()
        o = options.ConchOptions()

        def _(host, *args):
            o['host'] = host

        o.parseArgs = _
        o.parseOptions(cmds1)
        vhk = default.verifyHostKey
        self.conn = conn = test_conch.SSHTestConnectionForUnix(None)
        uao = default.SSHUserAuthClient(o['user'], o, conn)
        return connect.connect(o['host'], int(o['port']), o, vhk, uao)
Ejemplo n.º 3
0
    def connectConsole(console, user=None, host='127.0.0.1', port=9000):
        opts = options.ConchOptions()
        opts.parseOptions([])
        opts['host'] = host
        opts['port'] = port
        if user is None:
            user = getpass.getuser()
        conn = SSHConnection(console)
        userauth = default.SSHUserAuthClient(user, opts, conn)

        def eb(reason):
            log.err(reason)
            console.writeHelp('failed connecting to remote: %s' % reason)

        log.msg('connecting')

        def verifyHostKey(transport, host, pubKey, fingerprint):
            log.msg('verifying host key')
            actualHost = transport.factory.options['host']
            actualKey = keys.Key.fromString(pubKey)
            kh = KnownHostsFile.fromPath(
                FilePath(transport.factory.options['known-hosts']
                         or os.path.expanduser('~/.ssh/known_hosts')))
            return kh.verifyHostKey(console, actualHost, host,
                                    actualKey).addErrback(log.err)

        connect.connect(host, port, opts, verifyHostKey,
                        userauth).addErrback(eb)
        return conn
Ejemplo n.º 4
0
    def connectSSH(self, strport, sshConnection=None):
        if sshConnection is None:
            sshConnection = SSHConnection(self, self.options)

        #vhk = default.verifyHostKey
        vhk = lambda *a: defer.succeed(1)
        uao = default.SSHUserAuthClient(self.options['user'], self.options,
                                        sshConnection)
        d = defer.Deferred()
        factory = direct.SSHClientFactory(d, self.options, vhk, uao)

        endpoint = endpoints.clientFromString(reactor, strport)
        try:
            wp = yield endpoint.connect(factory)
        except Exception:

            def _stop():
                try:
                    reactor.stop()
                except:
                    pass

            reactor.callLater(0.1, _stop)
            raise
        defer.returnValue(wp)
Ejemplo n.º 5
0
 def makeAuthClient(self, port, options):
     cmds = (('-p %i -l testuser '
              '--known-hosts kh_test '
              '--user-authentications publickey '
              '--host-key-algorithms ssh-rsa '
              '-a '
              '-K direct '
              '-i dsa_test '
              '127.0.0.1') % port).split()
     options.parseOptions(cmds)
     return default.SSHUserAuthClient(options['user'], options, self.conn)
Ejemplo n.º 6
0
def doConnect(options):
    if "@" in options["host"]:
        options["user"], options["host"] = options["host"].split("@", 1)
    host = options["host"]
    if not options["user"]:
        options["user"] = getpass.getuser()
    if not options["port"]:
        options["port"] = 22
    else:
        options["port"] = int(options["port"])
    host = options["host"]
    port = options["port"]
    conn = SSHConnection()
    conn.options = options
    vhk = default.verifyHostKey
    uao = default.SSHUserAuthClient(options["user"], options, conn)
    connect.connect(host, port, options, vhk, uao).addErrback(_ebExit)
Ejemplo n.º 7
0
def doConnect(options):
    if '@' in options['host']:
        options['user'], options['host'] = options['host'].split('@', 1)
    host = options['host']
    if not options['user']:
        options['user'] = getpass.getuser()
    if not options['port']:
        options['port'] = 22
    else:
        options['port'] = int(options['port'])
    host = options['host']
    port = options['port']
    conn = SSHConnection()
    conn.options = options
    vhk = default.verifyHostKey
    uao = default.SSHUserAuthClient(options['user'], options, conn)
    connect.connect(host, port, options, vhk, uao).addErrback(_ebExit)
Ejemplo n.º 8
0
def doConnect():
#    log.deferr = handleError # HACK
    if '@' in options['host']:
        options['user'], options['host'] = options['host'].split('@',1)
    if not options.identitys:
        options.identitys = ['~/.ssh/id_rsa', '~/.ssh/id_dsa']
    host = options['host']
    if not options['user']:
        options['user'] = getpass.getuser()
    if not options['port']:
        options['port'] = 22
    else:
        options['port'] = int(options['port'])
    host = options['host']
    port = options['port']
    vhk = default.verifyHostKey
    uao = default.SSHUserAuthClient(options['user'], options, SSHConnection())
    connect.connect(host, port, options, vhk, uao).addErrback(_ebExit)
Ejemplo n.º 9
0
def doConnect():
    if "@" in options["host"]:
        options["user"], options["host"] = options["host"].split("@", 1)
    if not options.identitys:
        options.identitys = ["~/.ssh/id_rsa", "~/.ssh/id_dsa"]
    host = options["host"]
    if not options["user"]:
        options["user"] = getpass.getuser()
    if not options["port"]:
        options["port"] = 22
    else:
        options["port"] = int(options["port"])
    host = options["host"]
    port = options["port"]
    vhk = default.verifyHostKey
    if not options["host-key-algorithms"]:
        options["host-key-algorithms"] = default.getHostKeyAlgorithms(
            host, options)
    uao = default.SSHUserAuthClient(options["user"], options, SSHConnection())
    connect.connect(host, port, options, vhk, uao).addErrback(_ebExit)
Ejemplo n.º 10
0
def doConnect():
    if '@' in options['host']:
        options['user'], options['host'] = options['host'].split('@', 1)
    if not options.identitys:
        options.identitys = ['~/.ssh/id_rsa', '~/.ssh/id_dsa']
    host = options['host']
    if not options['user']:
        options['user'] = getpass.getuser()
    if not options['port']:
        options['port'] = 22
    else:
        options['port'] = int(options['port'])
    host = options['host']
    port = options['port']
    vhk = default.verifyHostKey
    if not options['host-key-algorithms']:
        options['host-key-algorithms'] = default.getHostKeyAlgorithms(
            host, options)
    uao = default.SSHUserAuthClient(options['user'], options, SSHConnection())
    connect.connect(host, port, options, vhk, uao).addErrback(_ebExit)