Categorygithub.com/blacknon/go-sshlib
modulepackage
0.1.20
Repository: https://github.com/blacknon/go-sshlib.git
Documentation: pkg.go.dev

# README

go-sshlib

GoDoc

About

A library to handle ssh easily with Golang.It can do multiple proxy, x11 forwarding, etc. Supported on Linux, macOS and Windows.

If use pkcs11 authentication, cgo must be enabled.

Usage

See GoDoc reference.

Download

GO111MODULE=on go get github.com/blacknon/go-sshlib

Example

// Copyright (c) 2022 Blacknon. All rights reserved.
// Use of this source code is governed by an MIT license
// that can be found in the LICENSE file.

// Shell connection Example file.
// Change the value of the variable and compile to make sure that you can actually connect.
//
// This file uses password authentication. Please replace as appropriate.

package main

import (
    "fmt"
    "os"

    sshlib "github.com/blacknon/go-sshlib"
    "golang.org/x/crypto/ssh"
)

var (
    host     = "target.com"
    port     = "22"
    user     = "user"
    password = "password"

    termlog = "./test_termlog"
)

func main() {
    // Create sshlib.Connect
    con := &sshlib.Connect{
        // If you use x11 forwarding, please set to true.
        ForwardX11: false,

        // If you use ssh-agent forwarding, please set to true.
        // And after, run `con.ConnectSshAgent()`.
        ForwardAgent: false,
    }

    // Create ssh.AuthMethod
    authMethod := sshlib.CreateAuthMethodPassword(password)

    // If you use ssh-agent forwarding, uncomment it.
    // con.ConnectSshAgent()

    // Connect ssh server
    err := con.CreateClient(host, port, user, []ssh.AuthMethod{authMethod})
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    // Set terminal log
    con.SetLog(termlog, false)

    // Create Session
    session, err := con.CreateSession()
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }

    // Start ssh shell
    con.Shell(session)
}

# Functions

ConnectSshAgent.
CreateAuthMethodCertificate returns ssh.AuthMethod generated from Certificate.
CreateAuthMethodPassword returns ssh.AuthMethod generated from password.
CreateAuthMethodPublicKey returns ssh.AuthMethod generated from PublicKey.
CreateSignerAgent return []ssh.Signer from ssh-agent.
CreateSignerCertificate returns ssh.Signer generated from Certificate.
CreateSignerPublicKey returns []ssh.Signer generated from public key.
CreateSignerPublicKeyData return ssh.Signer from private key and password.
CreateSignerPublicKeyPrompt rapper CreateSignerPKCS11.
No description provided by the author
NewChangeOSFS wraps billy osfs to add the change interface.
No description provided by the author
RequestTty requests the association of a pty with the session on the remote host.

# Structs

Connect structure to store contents about ssh connection.
No description provided by the author
COS or OSFS + Change wraps a billy.FS to not fail the `Change` interface.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

AgentInterface Interface for storing agent.Agent or agent.ExtendedAgent.
No description provided by the author