Skip to content

Commit

Permalink
Support key based authentication
Browse files Browse the repository at this point in the history
  • Loading branch information
arunvelsriram committed Aug 12, 2020
1 parent ad2344a commit 5c18ba9
Show file tree
Hide file tree
Showing 8 changed files with 181 additions and 107 deletions.
12 changes: 10 additions & 2 deletions .talismanrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
fileignoreconfig:
- filename: pkg/config/config.go
checksum: 3d4547bb16555a9afb9277fa6d475c97f295d69b2eb9f000c9d89501f90f8c8c
- filename: sftp/ssh/key_with_passphrase.pub
checksum: f54d3e10f89dcec5c69bba33c5bbadff2b0241306af8ce37f7b5695080ccdea2
- filename: sftp/ssh/key_without_passphrase.pub
checksum: 2ec64dcc1725d82c1b1bce8a9769dd6effcb785ceb6682471d9f30d932abf64f
- filename: sftp/ssh/key_without_passphrase
checksum: 2e5bc6583ffed56355367c75bc533e57ceb19e31d1ecc44516189074e55a5142
- filename: sftp/ssh/key_with_passphrase
checksum: f59431b0b023ff7e9b85830121e8869da1fc5780d809ecfb0a28843239cac578
- filename: pkg/client/sftp_client.go
checksum: 0100aeebda7fff385ed63faf81eebbcc958433d0474e299dc31bf11eb66a1905
1 change: 1 addition & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ var rootCmd = &cobra.Command{
Short: "",
Long: "",
Run: func(cmd *cobra.Command, args []string) {
log.Debugf("config dump: %+v\n", cfg)
if err := server.Start(cfg); err != nil {
log.WithFields(log.Fields{"event": "starting server"}).Fatal(err)
}
Expand Down
66 changes: 62 additions & 4 deletions pkg/client/sftp_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package client

import (
"fmt"
"github.com/arunvelsriram/sftp-exporter/pkg/utils"

log "github.com/sirupsen/logrus"

Expand Down Expand Up @@ -49,13 +50,70 @@ func (d defaultSFTPClient) FSStat() (*model.FSStat, error) {
}, nil
}

func parsePrivateKey(key, keyPassphrase []byte) (parsedKey ssh.Signer, err error) {
if len(keyPassphrase) > 0 {
log.Debug("key has passphrase")
parsedKey, err = ssh.ParsePrivateKeyWithPassphrase(key, keyPassphrase)
if err != nil {
log.Error("failed to parse key with passphrase")
return nil, err
}
return parsedKey, err
}

log.Debug("key has no passphrase")
parsedKey, err = ssh.ParsePrivateKey(key)
if err != nil {
log.Error("failed to parse key")
return nil, err
}
return parsedKey, err
}

func sshAuthMethods(cfg config.Config) ([]ssh.AuthMethod, error) {
pass := cfg.GetSFTPPass()
key := cfg.GetSFTPKey()
keyPassphrase := cfg.GetSFTPKeyPassphrase()

if len(key) > 0 && utils.IsNotEmpty(pass) {
log.Debug("will be authenticating using key and password")
parsedKey, err := parsePrivateKey(key, keyPassphrase)
if err != nil {
return nil, err
}
return []ssh.AuthMethod{
ssh.PublicKeys(parsedKey),
ssh.Password(pass),
}, nil
} else if len(key) > 0 {
log.Debug("will be authenticating using key")
parsedKey, err := parsePrivateKey(key, keyPassphrase)
if err != nil {
return nil, err
}
return []ssh.AuthMethod{
ssh.PublicKeys(parsedKey),
}, nil
} else if utils.IsNotEmpty(pass) {
log.Debug("will be authenticating using password")
return []ssh.AuthMethod{
ssh.Password(pass),
}, nil
}

return nil, fmt.Errorf("either one of password or key is required")
}

func newSFTPClient(cfg config.Config) (SFTPClient, error) {
addr := fmt.Sprintf("%s:%d", cfg.GetSFTPHost(), cfg.GetSFTPPort())
auth, err := sshAuthMethods(cfg)
if err != nil {
log.Error("unable to get SSH auth methods")
return nil, err
}
clientConfig := &ssh.ClientConfig{
User: cfg.GetSFTPUser(),
Auth: []ssh.AuthMethod{
ssh.Password(cfg.GetSFTPPass()),
},
User: cfg.GetSFTPUser(),
Auth: auth,
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}

Expand Down
1 change: 1 addition & 0 deletions pkg/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ func (s *ConfigTestSuite) TestConfigLoadConfigPanicsWhenBothKeyAndKeyFileAreGive

s.PanicsWithValue("only one of sftp_key, sftp_key_file should be provided", func() { config.MustLoadConfig(s.fs) })
}

func (s *ConfigTestSuite) TestConfigLoadConfigPanicsForInvalidKey() {
viper.Set(c.ViperKeySFTPUser, "sftp user")
viper.Set(c.ViperKeySFTPKey, "invalid encoding")
Expand Down
104 changes: 54 additions & 50 deletions sftp/ssh/key_with_passphrase
Original file line number Diff line number Diff line change
@@ -1,50 +1,54 @@
-----BEGIN OPENSSH PRIVATE KEY-----
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
kNAA==
-----END OPENSSH PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,CB850C0867D33BF109BE25D73F2C6A57

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
-----END RSA PRIVATE KEY-----
2 changes: 1 addition & 1 deletion sftp/ssh/key_with_passphrase.pub
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQD1dXneJhlYbXOCy/u4DyrsIN+HD0DacfBJAHnMFGxuqlype7pQrUTWUH+DiNl8rfpSZTjEKnJqSA/K+TlKpmXgCcBsAzOv16F3IvHupd+EMyiA9lF9phmTgSH/DNn8XDbDwPIDbcQbjx/nJIQa8dH+/jwqw/WQ6UbIudOS7rkDio66V3NFzMl+qIunvnByN7wZucFWfD6F7wOfI4zc6cYMr4AfHT72s25/UCepINQoI53CKynrC3W3PC2yCHmKxJw52MFdrSZBObl3HUyPkjb3YwYKDDKAl527dmrq8yXq4YbgA45PH+W4r9USlEc0BrCUqnytH05fzFzykz9nsiwfxJGKwcjGat4m3aW80gpLgC17ss3BaMrk7mzqQvgwvLHZWsJrnjvml0wlAonz4VBiVj+AM24InpxYHV9jMQuVxtKquIYKVaN88xMU4C2QuGVLC/ltboSTk7Hejtez8r+IgQ5IdyHvvDvRbz77HrOmcjhxuT/Pm1P91bi5RS4+sVCCZTfOwar/XjcAcZ0JKt+eU3wl14ScAP4Y6J1ECeXPNEQqO0rFz4Pyger3YDd5sE/bjDg3Iqq46hD8VClX/8eosvzeCFznyMaX7msN9zZS6sZFQ0ETC3K3/pv2tQ5vzCCfCiPorMIHo6SnW1cPJDAgFEjdb+IcLHiyMV9SbhaLiw== foo@bar.com
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCrbVT3iJTuSmPrMVti8/bZ0RYxEyyNPlefeAw9wtnqpOThtlS6132CWtRcQDXiVuuId5TINJWDuavjyQWj4yININv4wkTDH+0adg/kD8v+vNIG3ighbIeehyk2FFCFM1LSJsanJmTBzAgFtNMuQZhsfd3GWu0Ly+NSs3iatDf0eCgzNhppvO7eRGFR1qSnFC92sLryFKKXIHEKQ0Huw4E51ZA0b94pxtR2x947jThDevqJsyohldxWUl+2zTKOD+reDzV3Qi1b3Tn4W5ExON3kPWMayxJcLKdOF7hB7RD/Th/eFoEdyPKdY0sHMgCTmIH3Y3vc7HTW41cgXFVOR4ClNfd/o7qHnEJJcwXxVmdNhw/pjXQAWr+EKqB6IF5E/GObkkf8ZNB/c82jrpPKDhtbEYGD8rLcJHdZCbA2LFJMUeqfVElZNeQ762K2ggPpmQ6cPuD1fP5cRDSOtuEJX+jF1T6kUifrLVJiEE06QMNis32dF4xuABtZzqEGvYsbEHYp8VtsY4ADxhICgKxiNjVzFxW/8VaXKngNDAB1U4C9dHuDVEmQ10abWClbRBW+nNm+c3+eidbLGQLBqeRSLZ9WMDebx5/yP4NxIKKcHVee3ZoAVFX1awPWVusA/FjjY2lnhgz7Lgki3Z62oVuQjYFr9f4NOaPqiAZ6lbzVHFg6qw== foo@bar.com
100 changes: 51 additions & 49 deletions sftp/ssh/key_without_passphrase
Original file line number Diff line number Diff line change
@@ -1,49 +1,51 @@
-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
2 changes: 1 addition & 1 deletion sftp/ssh/key_without_passphrase.pub
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDRwHFffYc0Sb8Lnx1YEpC4+9xw6jXUDHI08+iYZ57i5xqyB86Wgd0uHUj9ZaZWUBfQuVbgSuuDM9ORB5W5w1y53ucL75LMJZFGJHO2xoPVvtM4proifBqeqXEuJ9Su1axd9igrBnZ9153bzDN4wwI1JVXdGGj9wdWNP0ILMrTkVaDs8LhsTW+YyatlnGeHFlubhwkxNWtOTsZml2kuVg3vlRQs0/+hLGngxXJq7WldLOAGICs1nIXkR8ZCs+FPAcCixXlOaLSxfa387IhU5dtTUp3mHGavJYlMkLA4JmioQLPBe7ISLDn3yZJWD3Lzsme6qBT9VICQs0nWhziCf2kpXfhTh1mumiRU4kHc0aFwNRRNwF6XuAdfev2Xt6mRqUBQPnEIUEFJpL9rSKk3FHTBUUtG96gWEhHMHB6cpJ51f9s+r2B0pxBCUYL3ZiUYhlI/tH6RJ0AwT7OluDx204c/ebBQj3yHRMOYPAoDyztPfFjFW9Np4PSTqEvscZeRS/iiI5/BZL9O0sJh6hRPw/KqZHl3na8uWkEIK9gg9eQljEJ9UdZHC6qJiTi/laO61yGT4d1QMbPOYaFtVKUUYGCJ0gEZTM/D60tBrHGvzkDXKbR23nTSSM9zJdFJr/bQhELeyJtceWhwvcGyG9+ZVYMTHTjJAuq8gvZW1RJBhlY5BQ== foo@bar.com
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDauJij7368Jdpwgui6Hm4vv9yEeF4MWIWcXHUE6mLC5HlvVv8FuaND9aN3EgfFmAJ7iwpleX82y7VnIeymKHdsYENPm6rl25YP4MqnIcPYgXfBWbRlh1H0kYQDf/N9zdfg+sqSkFmnpOs6/Dwb/5T8Dh+squVc9DF+jiFM+V1ZONaz3Hpvxrm4Gc0iAf0Wv9pTFvpD/Ydcog7dIHGx+dpy06IgvLO++pxCScp4zEvn3YeZoCfEhDRlhBFRxuuZIKVhrkB4Kq/FM5wcL4EYRA9XsyxcSwjJp9FcNG6of5EaHLG96ngqH0gBcDZkqtUiHzIflD1vgseUwh00/osiUx27lpF0nvB4576K4eAkQbww/Vw+sfEFnED2INTVV45UyUHmlVRG7ya8HKZzoTpmzJu/TRUI5fscEDPV7Eadhrh7KSZsQAvoH583wjwWW5sWG/VtgLg17fHvwrsWcbLpmWxQNXEUg8EEe/P2QbRvCagCA2T+qXOKDY8eyhwD6Z7LhNs/5dun8BOqxllX1lDwXim24E5k5521ZiAxtJ9ZRuUiRc5POueRu9rj9HlukT+WdMarJ1JCmJcjUXzcKpsixo1mR7Y7Z9PGpzL7G9+io/XmSblCXqtcgo1WW14cqlAmNS3AV5sd/0IRQcYApH7kEFxWAAikyJsssYmUBtkHTJWy2Q== foo@bar.com

0 comments on commit 5c18ba9

Please sign in to comment.