Created
March 25, 2017 04:56
-
-
Save erikdubbelboer/f62a109d8e8798a11eb89ed494491953 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bytes" | |
"io/ioutil" | |
"log" | |
"net" | |
"os" | |
"golang.org/x/crypto/ssh" | |
"golang.org/x/crypto/ssh/agent" | |
) | |
// Get default location of a private key | |
func privateKeyPath() string { | |
return os.Getenv("HOME") + "/.ssh/id_rsa" | |
} | |
// Get private key for ssh authentication | |
func parsePrivateKey(keyPath string) (ssh.Signer, error) { | |
buff, _ := ioutil.ReadFile(keyPath) | |
return ssh.ParsePrivateKey(buff) | |
} | |
func makeSshConfig(user string) (*ssh.ClientConfig, error) { | |
/*key, err := parsePrivateKey(privateKeyPath()) | |
if err != nil { | |
return nil, err | |
}*/ | |
socket := os.Getenv("SSH_AUTH_SOCK") | |
conn, err := net.Dial("unix", socket) | |
if err != nil { | |
return nil, err | |
} | |
agentClient := agent.NewClient(conn) | |
config := ssh.ClientConfig{ | |
User: user, | |
Auth: []ssh.AuthMethod{ | |
//ssh.PublicKeys(key), | |
ssh.PublicKeysCallback(agentClient.Signers), | |
}, | |
} | |
return &config, nil | |
} | |
func main() { | |
config, err := makeSshConfig("erik") | |
if err != nil { | |
log.Fatalf("[ERR] %v", err) | |
} | |
client, err := ssh.Dial("tcp", "homepage:22", config) | |
if err != nil { | |
log.Fatalf("[ERR] %v", err) | |
} | |
session, err := client.NewSession() | |
if err != nil { | |
log.Fatalf("[ERR] %v", err) | |
} | |
defer session.Close() | |
var b bytes.Buffer | |
session.Stdout = &b | |
if err := session.Run("/bin/ps auxf"); err != nil { | |
log.Fatalf("[ERR] %v", err) | |
} | |
log.Println(b.String()) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment