mirror of
https://github.com/rancher/rke.git
synced 2025-08-13 12:38:29 +00:00
Better error when ssh_key_path can't be opened
This commit is contained in:
parent
a330cfb907
commit
c4f12c8b0d
@ -195,7 +195,11 @@ func ParseCluster(
|
|||||||
|
|
||||||
// Create k8s wrap transport for bastion host
|
// Create k8s wrap transport for bastion host
|
||||||
if len(c.BastionHost.Address) > 0 {
|
if len(c.BastionHost.Address) > 0 {
|
||||||
c.K8sWrapTransport = hosts.BastionHostWrapTransport(c.BastionHost)
|
var err error
|
||||||
|
c.K8sWrapTransport, err = hosts.BastionHostWrapTransport(c.BastionHost)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,11 @@ func newDialer(h *Host, kind string) (*dialer, error) {
|
|||||||
useSSHAgentAuth: h.SSHAgentAuth,
|
useSSHAgentAuth: h.SSHAgentAuth,
|
||||||
}
|
}
|
||||||
if bastionDialer.sshKeyString == "" {
|
if bastionDialer.sshKeyString == "" {
|
||||||
bastionDialer.sshKeyString = privateKeyPath(h.BastionHost.SSHKeyPath)
|
var err error
|
||||||
|
bastionDialer.sshKeyString, err = privateKeyPath(h.BastionHost.SSHKeyPath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +59,12 @@ func newDialer(h *Host, kind string) (*dialer, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if dialer.sshKeyString == "" {
|
if dialer.sshKeyString == "" {
|
||||||
dialer.sshKeyString = privateKeyPath(h.SSHKeyPath)
|
var err error
|
||||||
|
dialer.sshKeyString, err = privateKeyPath(h.SSHKeyPath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch kind {
|
switch kind {
|
||||||
@ -167,7 +176,7 @@ func (d *dialer) getBastionHostTunnelConn() (*ssh.Client, error) {
|
|||||||
return ssh.NewClient(newClientConn, channels, sshRequest), nil
|
return ssh.NewClient(newClientConn, channels, sshRequest), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func BastionHostWrapTransport(bastionHost v3.BastionHost) k8s.WrapTransport {
|
func BastionHostWrapTransport(bastionHost v3.BastionHost) (k8s.WrapTransport, error) {
|
||||||
|
|
||||||
bastionDialer := &dialer{
|
bastionDialer := &dialer{
|
||||||
sshAddress: fmt.Sprintf("%s:%s", bastionHost.Address, bastionHost.Port),
|
sshAddress: fmt.Sprintf("%s:%s", bastionHost.Address, bastionHost.Port),
|
||||||
@ -178,7 +187,12 @@ func BastionHostWrapTransport(bastionHost v3.BastionHost) k8s.WrapTransport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if bastionDialer.sshKeyString == "" {
|
if bastionDialer.sshKeyString == "" {
|
||||||
bastionDialer.sshKeyString = privateKeyPath(bastionHost.SSHKeyPath)
|
var err error
|
||||||
|
bastionDialer.sshKeyString, err = privateKeyPath(bastionHost.SSHKeyPath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return func(rt http.RoundTripper) http.RoundTripper {
|
return func(rt http.RoundTripper) http.RoundTripper {
|
||||||
if ht, ok := rt.(*http.Transport); ok {
|
if ht, ok := rt.(*http.Transport); ok {
|
||||||
@ -187,5 +201,5 @@ func BastionHostWrapTransport(bastionHost v3.BastionHost) k8s.WrapTransport {
|
|||||||
ht.Dial = bastionDialer.Dial
|
ht.Dial = bastionDialer.Dial
|
||||||
}
|
}
|
||||||
return rt
|
return rt
|
||||||
}
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -82,10 +82,6 @@ func parsePrivateKey(keyBuff string) (ssh.Signer, error) {
|
|||||||
return ssh.ParsePrivateKey([]byte(keyBuff))
|
return ssh.ParsePrivateKey([]byte(keyBuff))
|
||||||
}
|
}
|
||||||
|
|
||||||
func parsePrivateKeyWithPassPhrase(keyBuff string, passphrase []byte) (ssh.Signer, error) {
|
|
||||||
return ssh.ParsePrivateKeyWithPassphrase([]byte(keyBuff), passphrase)
|
|
||||||
}
|
|
||||||
|
|
||||||
func getSSHConfig(username, sshPrivateKeyString string, useAgentAuth bool) (*ssh.ClientConfig, error) {
|
func getSSHConfig(username, sshPrivateKeyString string, useAgentAuth bool) (*ssh.ClientConfig, error) {
|
||||||
config := &ssh.ClientConfig{
|
config := &ssh.ClientConfig{
|
||||||
User: username,
|
User: username,
|
||||||
@ -116,12 +112,15 @@ func getSSHConfig(username, sshPrivateKeyString string, useAgentAuth bool) (*ssh
|
|||||||
return config, nil
|
return config, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func privateKeyPath(sshKeyPath string) string {
|
func privateKeyPath(sshKeyPath string) (string, error) {
|
||||||
if sshKeyPath[:2] == "~/" {
|
if sshKeyPath[:2] == "~/" {
|
||||||
sshKeyPath = filepath.Join(userHome(), sshKeyPath[2:])
|
sshKeyPath = filepath.Join(userHome(), sshKeyPath[2:])
|
||||||
}
|
}
|
||||||
buff, _ := ioutil.ReadFile(sshKeyPath)
|
buff, err := ioutil.ReadFile(sshKeyPath)
|
||||||
return string(buff)
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("Error while reading SSH key file: %v", err)
|
||||||
|
}
|
||||||
|
return string(buff), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func userHome() string {
|
func userHome() string {
|
||||||
|
Loading…
Reference in New Issue
Block a user