diff --git a/ocsp/ocsp.go b/ocsp/ocsp.go
index 6bfbd5d..91004ac 100644
--- a/ocsp/ocsp.go
+++ b/ocsp/ocsp.go
@@ -30,11 +30,11 @@
 type ResponseStatus int
 
 const (
-	Success           ResponseStatus = 0
-	Malformed         ResponseStatus = 1
-	InternalError     ResponseStatus = 2
-	TryLater          ResponseStatus = 3
-	// Status code four is ununsed in OCSP. See
+	Success       ResponseStatus = 0
+	Malformed     ResponseStatus = 1
+	InternalError ResponseStatus = 2
+	TryLater      ResponseStatus = 3
+	// Status code four is unused in OCSP. See
 	// https://tools.ietf.org/html/rfc6960#section-4.2.1
 	SignatureRequired ResponseStatus = 5
 	Unauthorized      ResponseStatus = 6
diff --git a/openpgp/write.go b/openpgp/write.go
index 15aaa1a..65a304c 100644
--- a/openpgp/write.go
+++ b/openpgp/write.go
@@ -231,7 +231,7 @@
 	}
 
 	cipher := packet.CipherFunction(candidateCiphers[0])
-	// If the cipher specifed by config is a candidate, we'll use that.
+	// If the cipher specified by config is a candidate, we'll use that.
 	configuredCipher := config.Cipher()
 	for _, c := range candidateCiphers {
 		cipherFunc := packet.CipherFunction(c)
diff --git a/sha3/sha3.go b/sha3/sha3.go
index c8fd31c..c86167c 100644
--- a/sha3/sha3.go
+++ b/sha3/sha3.go
@@ -42,7 +42,7 @@
 	storage [maxRate]byte
 
 	// Specific to SHA-3 and SHAKE.
-	fixedOutput bool            // whether this is a fixed-ouput-length instance
+	fixedOutput bool            // whether this is a fixed-output-length instance
 	outputLen   int             // the default output size in bytes
 	state       spongeDirection // whether the sponge is absorbing or squeezing
 }
diff --git a/ssh/agent/testdata_test.go b/ssh/agent/testdata_test.go
index b7a8781..cc42a87 100644
--- a/ssh/agent/testdata_test.go
+++ b/ssh/agent/testdata_test.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// IMPLEMENTOR NOTE: To avoid a package loop, this file is in three places:
+// IMPLEMENTATION NOTE: To avoid a package loop, this file is in three places:
 // ssh/, ssh/agent, and ssh/test/. It should be kept in sync across all three
 // instances.
 
diff --git a/ssh/cipher_test.go b/ssh/cipher_test.go
index 54b92b6..eced8d8 100644
--- a/ssh/cipher_test.go
+++ b/ssh/cipher_test.go
@@ -21,7 +21,7 @@
 }
 
 func TestPacketCiphers(t *testing.T) {
-	// Still test aes128cbc cipher althought it's commented out.
+	// Still test aes128cbc cipher although it's commented out.
 	cipherModes[aes128cbcID] = &streamCipherMode{16, aes.BlockSize, 0, nil}
 	defer delete(cipherModes, aes128cbcID)
 
diff --git a/ssh/client_auth_test.go b/ssh/client_auth_test.go
index 2fa3103..5bd8c2b 100644
--- a/ssh/client_auth_test.go
+++ b/ssh/client_auth_test.go
@@ -296,7 +296,7 @@
 	t.Log("sign with wrong key")
 	cert.SignCert(rand.Reader, testSigners["dsa"])
 	if err := tryAuth(t, clientConfig); err == nil {
-		t.Errorf("cert login passed with non-authoritive key")
+		t.Errorf("cert login passed with non-authoritative key")
 	}
 
 	t.Log("host cert")
diff --git a/ssh/keys.go b/ssh/keys.go
index d6167e7..0324e12 100644
--- a/ssh/keys.go
+++ b/ssh/keys.go
@@ -125,7 +125,7 @@
 			continue
 		}
 
-		// Strip out the begining of the known_host key.
+		// Strip out the beginning of the known_host key.
 		// This is either an optional marker or a (set of) hostname(s).
 		keyFields := bytes.Fields(in)
 		if len(keyFields) < 3 || len(keyFields) > 5 {
diff --git a/ssh/test/session_test.go b/ssh/test/session_test.go
index faf2d2b..fc7e471 100644
--- a/ssh/test/session_test.go
+++ b/ssh/test/session_test.go
@@ -289,7 +289,7 @@
 		defer server.Shutdown()
 		conf := clientConfig()
 		conf.Ciphers = []string{ciph}
-		// Don't fail if sshd doesnt have the cipher.
+		// Don't fail if sshd doesn't have the cipher.
 		conf.Ciphers = append(conf.Ciphers, cipherOrder...)
 		conn, err := server.TryDial(conf)
 		if err == nil {
@@ -310,7 +310,7 @@
 		defer server.Shutdown()
 		conf := clientConfig()
 		conf.MACs = []string{mac}
-		// Don't fail if sshd doesnt have the MAC.
+		// Don't fail if sshd doesn't have the MAC.
 		conf.MACs = append(conf.MACs, macOrder...)
 		if conn, err := server.TryDial(conf); err == nil {
 			conn.Close()
@@ -328,7 +328,7 @@
 		server := newServer(t)
 		defer server.Shutdown()
 		conf := clientConfig()
-		// Don't fail if sshd doesnt have the kex.
+		// Don't fail if sshd doesn't have the kex.
 		conf.KeyExchanges = append([]string{kex}, kexOrder...)
 		conn, err := server.TryDial(conf)
 		if err == nil {
diff --git a/ssh/test/testdata_test.go b/ssh/test/testdata_test.go
index ae48c75..a053f67 100644
--- a/ssh/test/testdata_test.go
+++ b/ssh/test/testdata_test.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// IMPLEMENTOR NOTE: To avoid a package loop, this file is in three places:
+// IMPLEMENTATION NOTE: To avoid a package loop, this file is in three places:
 // ssh/, ssh/agent, and ssh/test/. It should be kept in sync across all three
 // instances.
 
diff --git a/ssh/testdata_test.go b/ssh/testdata_test.go
index f2828c1..2da8c79 100644
--- a/ssh/testdata_test.go
+++ b/ssh/testdata_test.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// IMPLEMENTOR NOTE: To avoid a package loop, this file is in three places:
+// IMPLEMENTATION NOTE: To avoid a package loop, this file is in three places:
 // ssh/, ssh/agent, and ssh/test/. It should be kept in sync across all three
 // instances.
 
