x/crypto/ssh: remove misleading comment, add example
Add an example for using the PublicKeys AuthMethod.
Change-Id: I3fe02bb3c9b8ccf313d72858328c8576cbf3eb06
Reviewed-on: https://go-review.googlesource.com/22250
Reviewed-by: Han-Wen Nienhuys <hanwen@google.com>
diff --git a/ssh/example_test.go b/ssh/example_test.go
index dfd9dca..25f9951 100644
--- a/ssh/example_test.go
+++ b/ssh/example_test.go
@@ -113,8 +113,7 @@
}
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 @@
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",