package module
Version: v0.0.0-...-af34aff Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2020 License: Apache-2.0 Imports: 26 Imported by: 0



Package ssh provides a GOlang library for copying files and running commands over SSH


package main

import (


func main() {
	signer, err := ssh.MakePrivateKeySignerFromFile(os.ExpandEnv("$HOME/.ssh/id_rsa"))
	if err != nil {
	sout, serr, code, err := sshtools.Exec("ls -l /", "root", "<addr>:<port>", signer)
	log.Println(sout, serr, code, err)


This library is based on code from:



Package ssh provides a GOlang library for copying files and running commands over SSH



View Source
const RSABitSize = 2048


This section is empty.


func EncodePrivateKey

func EncodePrivateKey(private *rsa.PrivateKey) []byte

func EncodePublicKey

func EncodePublicKey(public *rsa.PublicKey) ([]byte, error)

func EncodeSSHKey

func EncodeSSHKey(public *rsa.PublicKey) ([]byte, error)

func GenerateKey

func GenerateKey(bits int) (*rsa.PrivateKey, *rsa.PublicKey, error)

func MakePrivateKeySignerFromBytes

func MakePrivateKeySignerFromBytes(buffer []byte) (ssh.Signer, error)

func MakePrivateKeySignerFromFile

func MakePrivateKeySignerFromFile(key string) (ssh.Signer, error)

func ParsePublicKeyFromFile

func ParsePublicKeyFromFile(keyFile string) (*rsa.PublicKey, error)

func RunSSHCommand

func RunSSHCommand(cmd, user, host string, signer ssh.Signer) (string, string, int, error)

RunSSHCommand returns the stdout, stderr, and exit code from running cmd on host as specific user, along with any SSH-level error. If user=="", it will default (like SSH) to os.Getenv("USER")


type SSHKey

type SSHKey struct {
	PublicKey          []byte `json:"publicKey,omitempty"`
	PrivateKey         []byte `json:"privateKey,omitempty"`
	AwsFingerprint     string `json:"awsFingerprint,omitempty"`
	OpensshFingerprint string `json:"opensshFingerprint,omitempty"`

func NewSSHKeyPair

func NewSSHKeyPair() (*SSHKey, error)

Source: This generates a single RSA 2048-bit SSH key AWS Key pair:

From PUB key: ssh-keygen -f ~/.ssh/ -e -m PKCS8 | openssl pkey -pubin -outform DER | openssl md5 -c From PRIV key: openssl rsa -in ~/.ssh/id_rsa -pubout -outform DER | openssl md5 -c

func ParseSSHKeyPair

func ParseSSHKeyPair(pub, priv string) (*SSHKey, error)

type SSHTunnelList

type SSHTunnelList struct {
	// contains filtered or unexported fields

func NewSSHTunnelList

func NewSSHTunnelList(user, keyfile string, healthCheckURL *url.URL, stopChan chan struct{}) *SSHTunnelList

func (*SSHTunnelList) Dial

func (l *SSHTunnelList) Dial(ctx context.Context, net, addr string) (net.Conn, error)

func (*SSHTunnelList) Update

func (l *SSHTunnelList) Update(addrs []string)

Update reconciles the list's entries with the specified addresses. Existing tunnels that are not in addresses are removed from entries and closed in a background goroutine. New tunnels specified in addresses are opened in a background goroutine and then added to entries.


Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL