|
|
@@ -113,8 +113,7 @@ func ExampleNewServerConn() {
|
|
|
}
|
|
|
|
|
|
func ExampleDial() {
|
|
|
- // An SSH client is represented with a ClientConn. Currently only
|
|
|
- // the "password" authentication method is supported.
|
|
|
+ // An SSH client is represented with a ClientConn.
|
|
|
//
|
|
|
// To authenticate with the remote server you must pass at least one
|
|
|
// implementation of AuthMethod via the Auth field in ClientConfig.
|
|
|
@@ -147,6 +146,39 @@ func ExampleDial() {
|
|
|
fmt.Println(b.String())
|
|
|
}
|
|
|
|
|
|
+func ExamplePublicKeys() {
|
|
|
+ // A public key may be used to authenticate against the remote
|
|
|
+ // server by using an unencrypted PEM-encoded private key file.
|
|
|
+ //
|
|
|
+ // If you have an encrypted private key, the crypto/x509 package
|
|
|
+ // can be used to decrypt it.
|
|
|
+ key, err := ioutil.ReadFile("/home/user/.ssh/id_rsa")
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("unable to read private key: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Create the Signer for this private key.
|
|
|
+ signer, err := ssh.ParsePrivateKey(key)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("unable to parse private key: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ config := &ssh.ClientConfig{
|
|
|
+ User: "user",
|
|
|
+ Auth: []ssh.AuthMethod{
|
|
|
+ // Use the PublicKeys method for remote authentication.
|
|
|
+ ssh.PublicKeys(signer),
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // Connect to the remote server and perform the SSH handshake.
|
|
|
+ client, err := ssh.Dial("tcp", "host.com:22", config)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("unable to connect: %v", err)
|
|
|
+ }
|
|
|
+ defer client.Close()
|
|
|
+}
|
|
|
+
|
|
|
func ExampleClient_Listen() {
|
|
|
config := &ssh.ClientConfig{
|
|
|
User: "username",
|