Skip to content

Commit 6077f2f

Browse files
committed
fix(ssh链接): 修复服务器openssh版本>7.4,使用密钥无法登录问题
问题跟踪:[#49952](golang/go#49952)
1 parent 8c63a76 commit 6077f2f

File tree

3 files changed

+57
-3
lines changed

3 files changed

+57
-3
lines changed

go.mod

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/pkg/sftp v1.13.5
88
github.com/schollz/progressbar/v3 v3.13.1
99
github.com/urfave/cli/v2 v2.25.1
10-
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3
10+
golang.org/x/crypto v0.8.0
1111
)
1212

1313
require (
@@ -20,6 +20,6 @@ require (
2020
github.com/rivo/uniseg v0.2.0 // indirect
2121
github.com/russross/blackfriday/v2 v2.1.0 // indirect
2222
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
23-
golang.org/x/sys v0.6.0 // indirect
24-
golang.org/x/term v0.6.0 // indirect
23+
golang.org/x/sys v0.7.0 // indirect
24+
golang.org/x/term v0.7.0 // indirect
2525
)

go.sum

+6
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRT
3737
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
3838
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M=
3939
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
40+
golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
41+
golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
4042
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
4143
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
4244
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -45,9 +47,13 @@ golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBc
4547
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
4648
golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
4749
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
50+
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
51+
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
4852
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
4953
golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
5054
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
55+
golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
56+
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
5157
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
5258
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
5359
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

test/ssh_test.go

+48
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,59 @@ import (
55
lsftp "github.com/kexin8/auto-deploy/sftp"
66
"github.com/pkg/sftp"
77
"github.com/schollz/progressbar/v3"
8+
"golang.org/x/crypto/ssh"
89
"io"
910
"os"
1011
"testing"
1112
)
1213

14+
const (
15+
address = ""
16+
username = ""
17+
publicKey = ""
18+
)
19+
20+
func TestPubKeyLogin(t *testing.T) {
21+
//t.Log(os.Getenv("SSH_AUTH_SOCK"))
22+
23+
key, err := os.ReadFile(publicKey)
24+
if err != nil {
25+
t.Error(err)
26+
}
27+
28+
signers, err := ssh.ParsePrivateKey(key)
29+
if err != nil {
30+
t.Error(err)
31+
}
32+
33+
auths := []ssh.AuthMethod{ssh.PublicKeys(signers)}
34+
config := &ssh.ClientConfig{
35+
User: username,
36+
Auth: auths,
37+
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
38+
}
39+
40+
client, err := ssh.Dial("tcp", address, config)
41+
if err != nil {
42+
t.Error(err)
43+
}
44+
defer client.Close()
45+
46+
session, err := client.NewSession()
47+
if err != nil {
48+
t.Error(err)
49+
}
50+
51+
defer session.Close()
52+
53+
output, err := session.Output("ls -l")
54+
if err != nil {
55+
t.Log(string(output))
56+
t.Error(err)
57+
}
58+
t.Log(string(output))
59+
}
60+
1361
func TestSftp(t *testing.T) {
1462
config := lsftp.SSHConfig{
1563
Address: "",

0 commit comments

Comments
 (0)