Difference between revisions of "Ssh login go"
Jump to navigation
Jump to search
(Created page with "``` package main import ( "bytes" "fmt" "log" "golang.org/x/crypto/ssh" ) func main() { config := &ssh.ClientConfig{ User: "username", Auth: []ssh.AuthMethod{ ss...") |
|||
| Line 38: | Line 38: | ||
} | } | ||
fmt.Println(b.String()) | fmt.Println(b.String()) | ||
| + | } | ||
| + | ``` | ||
| + | |||
| + | |||
| + | ``` | ||
| + | package main | ||
| + | |||
| + | import ( | ||
| + | "fmt" | ||
| + | |||
| + | "golang.org/x/crypto/ssh" | ||
| + | "golang.org/x/crypto/ssh/knownhosts" | ||
| + | ) | ||
| + | |||
| + | func main() { | ||
| + | host := "<hostname>:<port>" | ||
| + | user := "<username>" | ||
| + | pwd := "<password>" | ||
| + | pKey := []byte("<privateKey>") | ||
| + | |||
| + | var err error | ||
| + | var signer ssh.Signer | ||
| + | |||
| + | signer, err = ssh.ParsePrivateKey(pKey) | ||
| + | if err != nil { | ||
| + | fmt.Println(err.Error()) | ||
| + | } | ||
| + | |||
| + | var hostkeyCallback ssh.HostKeyCallback | ||
| + | hostkeyCallback, err = knownhosts.New("~/.ssh/known_hosts") | ||
| + | if err != nil { | ||
| + | fmt.Println(err.Error()) | ||
| + | } | ||
| + | |||
| + | conf := &ssh.ClientConfig{ | ||
| + | User: user, | ||
| + | HostKeyCallback: hostkeyCallback, | ||
| + | Auth: []ssh.AuthMethod{ | ||
| + | ssh.Password(pwd), | ||
| + | ssh.PublicKeys(signer), | ||
| + | }, | ||
| + | } | ||
} | } | ||
``` | ``` | ||
Latest revision as of 20:26, 19 December 2023
package main
import (
"bytes"
"fmt"
"log"
"golang.org/x/crypto/ssh"
)
func main() {
config := &ssh.ClientConfig{
User: "username",
Auth: []ssh.AuthMethod{
ssh.Password("password"),
},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
client, err := ssh.Dial("tcp", "myserver:22", config)
if err != nil {
log.Fatal("Failed to dial: ", err)
}
// Each ClientConn can support multiple interactive sessions,
// represented by a Session.
session, err := client.NewSession()
if err != nil {
log.Fatal("Failed to create session: ", err)
}
defer session.Close()
// Once a Session is created, you can execute a single command on
// the remote side using the Run method.
var b bytes.Buffer
session.Stdout = &b
if err := session.Run("/bin/hostname"); err != nil {
log.Fatal("Failed to run: " + err.Error())
}
fmt.Println(b.String())
}
package main
import (
"fmt"
"golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh/knownhosts"
)
func main() {
host := "<hostname>:<port>"
user := "<username>"
pwd := "<password>"
pKey := []byte("<privateKey>")
var err error
var signer ssh.Signer
signer, err = ssh.ParsePrivateKey(pKey)
if err != nil {
fmt.Println(err.Error())
}
var hostkeyCallback ssh.HostKeyCallback
hostkeyCallback, err = knownhosts.New("~/.ssh/known_hosts")
if err != nil {
fmt.Println(err.Error())
}
conf := &ssh.ClientConfig{
User: user,
HostKeyCallback: hostkeyCallback,
Auth: []ssh.AuthMethod{
ssh.Password(pwd),
ssh.PublicKeys(signer),
},
}
}