go远程ssh登录并执行shell命令
2024-05-22 / golang / 425 次围观 / 0 次吐槽 /使用golang.org/x/crypto/ssh库
package main
import (
"fmt"
"log"
"golang.org/x/crypto/ssh"
)
// SSHConfig 包含SSH连接的配置
type SSHConfig struct {
User string
Password string
Host string
Port string
}
// sshConnect 通过SSH连接到远程服务器
func sshConnect(config SSHConfig) (*ssh.Session, error) {
sshConfig := &ssh.ClientConfig{
User: config.User,
Auth: []ssh.AuthMethod{
ssh.Password(config.Password),
},
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
address := fmt.Sprintf("%s:%s", config.Host, config.Port)
client, err := ssh.Dial("tcp", address, sshConfig)
if err != nil {
return nil, fmt.Errorf("failed to dial: %v", err)
}
session, err := client.NewSession()
if err != nil {
return nil, fmt.Errorf("failed to create session: %v", err)
}
return session, nil
}
func main() {
config := SSHConfig{
User: "your_username",
Password: "your_password",
Host: "your_host",
Port: "22",
}
session, err := sshConnect(config)
if err != nil {
log.Fatalf("failed to connect: %v", err)
}
defer session.Close()
// 执行命令
cmd := "ls -la"
output, err := session.CombinedOutput(cmd)
if err != nil {
log.Fatalf("failed to run command: %v", err)
}
fmt.Println(string(output))
}Powered By Cheug's Blog
Copyright Cheug Rights Reserved.