// Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package ssh // ClientConn functional tests. // These tests require a running ssh server listening on port 22 // on the local host. Functional tests will be skipped unless // -ssh.user and -ssh.pass must be passed to gotest. import ( "flag" "testing" ) var ( sshuser = flag.String("ssh.user", "", "ssh username") sshpass = flag.String("ssh.pass", "", "ssh password") sshprivkey = flag.String("ssh.privkey", "", "ssh privkey file") ) func TestFuncPasswordAuth(t *testing.T) { if *sshuser == "" { t.Log("ssh.user not defined, skipping test") return } config := &ClientConfig{ User: *sshuser, Auth: []ClientAuth{ ClientAuthPassword(password(*sshpass)), }, } conn, err := Dial("tcp", "localhost:22", config) if err != nil { t.Fatalf("Unable to connect: %s", err) } defer conn.Close() } func TestFuncPublickeyAuth(t *testing.T) { if *sshuser == "" { t.Log("ssh.user not defined, skipping test") return } kc := new(keychain) if err := kc.loadPEM(*sshprivkey); err != nil { t.Fatalf("unable to load private key: %s", err) } config := &ClientConfig{ User: *sshuser, Auth: []ClientAuth{ ClientAuthKeyring(kc), }, } conn, err := Dial("tcp", "localhost:22", config) if err != nil { t.Fatalf("unable to connect: %s", err) } defer conn.Close() }