package main
import (
"golang.org/x/crypto/ssh"
"log"
"os"
"time"
)
func main() {
sshConfig := &ssh.ClientConfig{
User: "root",
Auth: []ssh.AuthMethod{
ssh.Password("123456"),
},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
ClientVersion: "",
Timeout: 10*time.Second,
}
sshClient ,err := ssh.Dial("tcp","IP:22",sshConfig)
if err != nil{
log.Fatal(err)
}
defer sshClient.Close()
log.Println("SessionID: ",sshClient.SessionID())
log.Println("user: ",sshClient.User())
log.Println("ssh server version:",string(sshClient.ServerVersion()))
log.Println("ssh client version: ",string(sshClient.ClientVersion()))
//create a new session
session, err := sshClient.NewSession()
if err != nil{
log.Println("failed to generate ssh session:",err)
}
defer session.Close()
modes := ssh.TerminalModes{
ssh.ECHO: 1,
ssh.TTY_OP_OSPEED: 14400,
ssh.TTY_OP_ISPEED: 14400,
ssh.VSTATUS: 1,
}
//fd := int(os.Stdin.Fd()) //stdin standard file write in...
//oldState,err := terminal.MakeRaw(fd)
//if err != nil{
// log.Fatalln(err.Error())
//}
//defer terminal.Restore(fd,oldState)
//
//termWidth , termHeight, err := terminal.GetSize(fd)
session.Stdin = os.Stdin
session.Stdout = os.Stdout
session.Stderr = os.Stderr
err = session.RequestPty("xterm",32,180,modes) //associate the pty with the session on the remote host
if err != nil{
log.Fatalln(err.Error())
}
err = session.Shell()
if err != nil{
log.Fatalln(err.Error())
}
err = session.Wait()
if err != nil{
log.Fatalln(err.Error())
}
}
ssh-golang 实例
最新推荐文章于 2023-07-12 15:57:42 发布