Я попытался подключиться к одной из моих виртуальных машин, используя SSH и Go. Он отлично работает через командную строку, если я делаю это так:
ssh [email protected]_host
Я вводил пароль, и он работает хорошо. Я попытался сделать это в Go, вот мой код:
package main
import (
"golang.org/x/crypto/ssh"
"fmt"
)
func connectViaSsh(user, host string, password string) (*ssh.Client, *ssh.Session) {
config := &ssh.ClientConfig{
User: user,
Auth: []ssh.AuthMethod{ssh.Password(password)},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
client, err := ssh.Dial("tcp", host, config)
fmt.Println(err)
session, err := client.NewSession()
fmt.Println(err)
return client, session
}
func main() {
client, _ := connectViaSsh("root", "host:22", "password")
client.Close()
}
Если я запустил его, он возвращает ошибку:
ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain
Кто-нибудь знает, что может вызвать такую ошибку. Он отлично работает с использованием paramiko в Python и в оболочке, но не работает в Go. Есть что-то, чего я не хватает?