网站首页 > 文章中心 > 其它

go语言ssh

作者:小编 更新时间:2023-09-04 18:16:15 浏览量:30人看过

gitee码云ssh配置无法使用的解决办法

解决办法是在个人用户的.ssh文件夹下创建一个名为config的配置文件,文件中写入以下内容

Host gitee.com

HostkeyAlgorithms +ssh-rsa

PubkeyAcceptedAlgorithms +ssh-rsa

go的ssh怎么执行sudo

指令就是你执行的shell命令 比如我要运行php 输入: php test.php 就会执行 第一个php是执行程序的名称

SSH(Secure Shell)协议在远程登录时比较常用,但是除此之外还有一些其它的功能也很好用,比如端口映射,X11转发,sftp文件传输等.

go语言ssh-图1

以下三篇文章将介绍golang版SSH的远程登录功能,端口映射功能及sftp文件传输功能.X11包含GUI的一些操作,没有找到相关的包,故不做介绍

通过golang自带的ssh包 golang.org/x/crypto/ssh 可以实现远程登录功能, 默认是不支持tab键和上下箭头的 ,

如何使用Go语言实现远程执行命令

一般命令

所谓一般命令,就是在一定时间内会执行完的命令.比如 grep, cat 等等. 执行命令的步骤是:连接,执行,获取结果

go语言ssh-图2

连接

import (

"fmt"

"time"

"golang.org/x/crypto/ssh"

)

func connect(user, password, host string, port int) (*ssh.Session, error) {

var (

auth []ssh.AuthMethod

addr string

clientConfig *ssh.ClientConfig

client *ssh.Client

session *ssh.Session

err error

// get auth method

auth = make([]ssh.AuthMethod, 0)

auth = append(auth, ssh.Password(password))

clientConfig = ssh.ClientConfig{

User: user,

Auth: auth,

}

// connet to ssh

addr = fmt.Sprintf("%s:%d", host, port)

if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {

return nil, err

// create session

if session, err = client.NewSession(); err != nil {

return session, nil

连接的方法很简单,只要提供登录主机的 用户*, *密码*, *主机名或者IP*, *SSH端口

go语言ssh-图3

执行,命令获取结果

连接成功后,执行命令很简单

"log"

"os"

func main() {

if err != nil {

log.Fatal(err)

defer session.Close()

session.Run("ls /; ls /abc")

上面代码运行之后,虽然命令正常执行了,但是没有正常输出的结果,也没有异常输出的结果. 要想显示结果,需要将 session 的 Stdout 和 Stderr 重定向 修改 func main 为如下:

session.Stdout = os.Stdout

session.Stderr = os.Stderr

这样就能在屏幕上显示正常,异常的信息了.

交互式命令

fd := int(os.Stdin.Fd())

oldState, err := terminal.MakeRaw(fd)

panic(err)

defer terminal.Restore(fd, oldState)

// excute command

session.Stdin = os.Stdin

termWidth, termHeight, err := terminal.GetSize(fd)

// Set up terminal modes

modes := ssh.TerminalModes{

ssh.ECHO: 1, // enable echoing

// Request pseudo terminal

session.Run("top")

以上就是土嘎嘎小编为大家整理的go语言ssh相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章