终端输入版
package main
import (
"golang.org/x/crypto/ssh"
"log"
"os"
)
const (
address = "xx.xx.xx.xx"
username = "username"
password = "password"
)
func main() {
config := ssh.ClientConfig{
User: username,
Auth: []ssh.AuthMethod{ssh.Password(password)},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
client, err := ssh.Dial("tcp", address, &config)
if err != nil {
log.Println(err)
return
}
session, _ := client.NewSession()
defer session.Close()
modes := ssh.TerminalModes{
ssh.ECHO: 0,
ssh.TTY_OP_ISPEED: 14400,
ssh.TTY_OP_OSPEED: 14400,
}
err = session.RequestPty("linux", 32, 160, modes)
if err != nil {
log.Println(err)
return
}
session.Stdout = os.Stdout
session.Stdin = os.Stdin
session.Stderr = os.Stderr
session.Shell()
session.Wait()
}
返回数据版
package main
import (
"fmt"
"golang.org/x/crypto/ssh"
"log"
)
const (
address = "xx.xx.xx.xx"
username = "username"
password = "password"
)
func main() {
config := ssh.ClientConfig{
User: username,
Auth: []ssh.AuthMethod{ssh.Password(password)},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
client, err := ssh.Dial("tcp", address, &config)
if err != nil {
log.Println(err)
return
}
session, _ := client.NewSession()
defer session.Close()
combo, err := session.CombinedOutput(" ls;")
if err != nil {
log.Fatal("远程执行cmd 失败", err)
return
}
fmt.Println(string(combo))
}