本文整理匯總了Golang中code/google/com/p/go/crypto/ssh.ClientConfig類的典型用法代碼示例。如果您正苦於以下問題:Golang ClientConfig類的具體用法?Golang ClientConfig怎麽用?Golang ClientConfig使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了ClientConfig類的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestOpenRetry
func TestOpenRetry(t *testing.T) {
c := 0
rand := new(failReader)
p := &Pool{Dial: func(net, addr string) (net.Conn, error) {
c++
conn := dial(t)
return conn, nil
}}
config := new(ssh.ClientConfig)
*config = *clientConfig
config.Rand = rand
_, err := p.Open("net", "addr", config)
if err != nil {
t.Fatal("unexpected error:", err)
}
conn := p.tab[p.key("net", "addr", config)].c
*rand = true
config.Rand = nil
_, err = p.Open("net", "addr", config)
if err != nil {
t.Fatal("unexpected error:", err)
}
if c != 2 {
t.Fatalf("calls = %d want 2", c)
}
const errClosing = "use of closed network connection" // from package net
if err := conn.Close(); err == nil || err.Error() != errClosing {
t.Fatalf("conn still open, want closed; err = %v", err)
}
}
示例2: TestAuth
func TestAuth(t *testing.T) {
a, b, err := netPipe()
if err != nil {
t.Fatalf("netPipe: %v", err)
}
defer a.Close()
defer b.Close()
agent, _, cleanup := startAgent(t)
defer cleanup()
if err := agent.Add(testPrivateKeys["rsa"], nil, "comment"); err != nil {
t.Errorf("Add: %v", err)
}
serverConf := ssh.ServerConfig{}
serverConf.AddHostKey(testSigners["rsa"])
serverConf.PublicKeyCallback = func(c ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) {
if bytes.Equal(key.Marshal(), testPublicKeys["rsa"].Marshal()) {
return nil, nil
}
return nil, errors.New("pubkey rejected")
}
go func() {
conn, _, _, err := ssh.NewServerConn(a, &serverConf)
if err != nil {
t.Fatalf("Server: %v", err)
}
conn.Close()
}()
conf := ssh.ClientConfig{}
conf.Auth = append(conf.Auth, ssh.PublicKeysCallback(agent.Signers))
conn, _, _, err := ssh.NewClientConn(b, "", &conf)
if err != nil {
t.Fatalf("NewClientConn: %v", err)
}
conn.Close()
}
示例3: sshConfig
func sshConfig(state multistep.StateBag) (*ssh.ClientConfig, error) {
config := state.Get("config").(config)
clientConfig := ssh.ClientConfig{User: config.SSHUsername}
if config.OsSnapshot == "" && config.IpxeUrl == "" {
// default case where vultr generated the password
password := state.Get("default_password").(string)
clientConfig.Auth = []ssh.AuthMethod{ssh.Password(password)}
} else if config.SSHPassword != "" {
// special case but we got a password
clientConfig.Auth = []ssh.AuthMethod{ssh.Password(config.SSHPassword)}
} else {
// special case and we got a key
signer, err := ssh.ParsePrivateKey([]byte(config.SSHPrivateKey))
if err != nil {
return nil, fmt.Errorf("Error setting up SSH config: %s", err)
}
clientConfig.Auth = []ssh.AuthMethod{ssh.PublicKeys(signer)}
}
return &clientConfig, nil
}
示例4: sshClientConfig
func sshClientConfig(user string, checker *HostKeyChecker) (*gossh.ClientConfig, error) {
agentClient, err := SSHAgentClient()
if err != nil {
return nil, err
}
signers, err := agentClient.Signers()
if err != nil {
return nil, err
}
cfg := gossh.ClientConfig{
User: user,
Auth: []gossh.AuthMethod{
gossh.PublicKeys(signers...),
},
}
if checker != nil {
cfg.HostKeyCallback = checker.Check
}
return &cfg, nil
}