go-SSH连接

终端输入版

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()
    
    // 设置Terminal Mode
	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() // 启动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))
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值