golang 去lang SSH连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 去lang SSH连接相关的知识,希望对你有一定的参考价值。

package main

import (
  "bytes"
  "code.google.com/p/go.crypto/ssh"
  "fmt"
  "io/ioutil"
  "os"
)

func main() {
  pk, _ := ioutil.ReadFile(os.Getenv("HOME") + "/.ssh/id_rsa")
  signer, err := ssh.ParsePrivateKey(pk)

  if err != nil {
    panic(err)
  }

  config := &ssh.ClientConfig{
    User: "root",
    Auth: []ssh.AuthMethod{
      ssh.PublicKeys(signer),
    },
  }

  client, err := ssh.Dial("tcp", "hostname:22", config)
  
  if err != nil {
    panic("Failed to dial: " + err.Error())
  }

  // Each ClientConn can support multiple interactive sessions,
  // represented by a Session.
  session, err := client.NewSession()
  if err != nil {
    panic("Failed to create session: " + err.Error())
  }
  defer session.Close()

  // Once a Session is created, you can execute a single command on
  // the remote side using the Run method.
  var b bytes.Buffer
  session.Stdout = &b
  if err := session.Run("ls"); err != nil {
    panic("Failed to run: " + err.Error())
  }
  fmt.Println(b.String())
}

golang SSH客户端三件套 - 1远程连接 shell

参考技术A

golang SSH客户端系列文章目录

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

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

通过golang自带的ssh包 golang.org/x/crypto/ssh 可以实现远程登录功能, 默认是不支持tab键和上下箭头的
通过导入golang.org/x/crypto/ssh/terminal来创建VT100终端可以支持tab等功能,让golang版本的ssh客户端体验和平时用的其它客户端差不多。

以上是关于golang 去lang SSH连接的主要内容,如果未能解决你的问题,请参考以下文章

golang SSH客户端三件套 - 1远程连接 shell

golang 实现ssh公钥登录

如何解决ssh连接CentOS后中文显示乱码

Golang SSH到思科无线控制器和运行命令

怎么用ssh去连接容器

[Go] golang实现mysql连接池