Commit 7f20bcbb authored by Dave Cheney's avatar Dave Cheney Committed by Adam Langley

exp/ssh: various small fixes

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
parent 6a88f1c4
...@@ -78,8 +78,26 @@ present a simple terminal interface. ...@@ -78,8 +78,26 @@ present a simple terminal interface.
return return
}() }()
An SSH client is represented with a ClientConn. Currently only the "password" To authenticate with the remote server you must pass at least one implementation of
authentication method is supported. 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{ config := &ClientConfig{
User: "username", User: "username",
...@@ -94,12 +112,12 @@ Each ClientConn can support multiple interactive sessions, represented by a Sess ...@@ -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 Once a Session is created, you can execute a single command on the remote side
using the Run method. using the Run method.
b := bytes.NewBuffer()
session.Stdin = b
if err := session.Run("/usr/bin/whoami"); err != nil { if err := session.Run("/usr/bin/whoami"); err != nil {
panic("Failed to exec: " + err.String()) panic("Failed to exec: " + err.String())
} }
reader := bufio.NewReader(session.Stdin) fmt.Println(bytes.String())
line, _, _ := reader.ReadLine()
fmt.Println(line)
session.Close() session.Close()
*/ */
package ssh package ssh
...@@ -117,9 +117,7 @@ func (r *reader) readOnePacket() ([]byte, error) { ...@@ -117,9 +117,7 @@ func (r *reader) readOnePacket() ([]byte, error) {
return nil, err return nil, err
} }
mac := packet[length-1:] 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 { if r.mac != nil {
r.mac.Write(packet[:length-1]) r.mac.Write(packet[:length-1])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment