]> Cypherpunks repositories - gostls13.git/commitdiff
exp/ssh: various small fixes
authorDave Cheney <dave@cheney.net>
Tue, 27 Dec 2011 14:49:19 +0000 (09:49 -0500)
committerAdam Langley <agl@golang.org>
Tue, 27 Dec 2011 14:49:19 +0000 (09:49 -0500)
transport.go:
* remove unused nil check.

doc.go:
* improve documentation about supported auth
methods and update Run example.

Thanks Jacek Masiulaniec for both reports.

R=jacek.masiulaniec, agl
CC=golang-dev
https://golang.org/cl/5501075

src/pkg/exp/ssh/doc.go
src/pkg/exp/ssh/transport.go

index 480f877191a1b705115e4097e7aea8764cea2cef..4ea402c5d2d2158acb0ba6a90f049f42f3453977 100644 (file)
@@ -78,8 +78,26 @@ present a simple terminal interface.
                return
        }()
 
-An SSH client is represented with a ClientConn. Currently only the "password"
-authentication method is supported. 
+To authenticate with the remote server you must pass at least one implementation of 
+ClientAuth via the Auth field in ClientConfig.
+
+       // password implements the ClientPassword interface
+       type password string
+
+       func (p password) Password(user string) (string, error) {
+               return string(p), nil
+       }
+
+       config := &ssh.ClientConfig {
+               User: "username",
+               Auth: []ClientAuth {
+                       // ClientAuthPassword wraps a ClientPassword implementation
+                       // in a type that implements ClientAuth.
+                       ClientAuthPassword(password("yourpassword")),
+               }
+       }
+
+An SSH client is represented with a ClientConn. 
 
        config := &ClientConfig{
                User: "username",
@@ -94,12 +112,12 @@ Each ClientConn can support multiple interactive sessions, represented by a Sess
 Once a Session is created, you can execute a single command on the remote side 
 using the Run method.
 
+       b := bytes.NewBuffer()
+       session.Stdin = b
        if err := session.Run("/usr/bin/whoami"); err != nil {
                panic("Failed to exec: " + err.String())
        }
-       reader := bufio.NewReader(session.Stdin)
-       line, _, _ := reader.ReadLine()
-       fmt.Println(line)
+       fmt.Println(bytes.String())
        session.Close()
 */
 package ssh
index bcd073e7ce6ec11451df55aa479fa316d0e01ee1..2e7c955a12de6d9abb3b6f8c1b0cfa802a1440e3 100644 (file)
@@ -117,9 +117,7 @@ func (r *reader) readOnePacket() ([]byte, error) {
                return nil, err
        }
        mac := packet[length-1:]
-       if r.cipher != nil {
-               r.cipher.XORKeyStream(packet, packet[:length-1])
-       }
+       r.cipher.XORKeyStream(packet, packet[:length-1])
 
        if r.mac != nil {
                r.mac.Write(packet[:length-1])