add ssh tunnel
This commit is contained in:
@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/go-gost/gost/pkg/auth"
|
||||
tls_util "github.com/go-gost/gost/pkg/common/util/tls"
|
||||
ssh_util "github.com/go-gost/gost/pkg/internal/util/ssh"
|
||||
md "github.com/go-gost/gost/pkg/metadata"
|
||||
"golang.org/x/crypto/ssh"
|
||||
)
|
||||
@ -64,7 +65,7 @@ func (h *forwardHandler) parseMetadata(md md.Metadata) (err error) {
|
||||
}
|
||||
|
||||
if name := md.GetString(authorizedKeys); name != "" {
|
||||
m, err := parseAuthorizedKeysFile(name)
|
||||
m, err := ssh_util.ParseAuthorizedKeysFile(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -73,22 +74,3 @@ func (h *forwardHandler) parseMetadata(md md.Metadata) (err error) {
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// parseSSHAuthorizedKeysFile parses ssh authorized keys file.
|
||||
func parseAuthorizedKeysFile(name string) (map[string]bool, error) {
|
||||
authorizedKeysBytes, err := ioutil.ReadFile(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
authorizedKeysMap := make(map[string]bool)
|
||||
for len(authorizedKeysBytes) > 0 {
|
||||
pubKey, _, _, rest, err := ssh.ParseAuthorizedKey(authorizedKeysBytes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
authorizedKeysMap[string(pubKey.Marshal())] = true
|
||||
authorizedKeysBytes = rest
|
||||
}
|
||||
|
||||
return authorizedKeysMap, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user