Difference between revisions of "Ssh login go"

From UVOO Tech Wiki
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),
        },
    }
}