go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/_motor/providers/ssh/ssh_manual_test.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 //go:build debugtest 5 // +build debugtest 6 7 package ssh_test 8 9 import ( 10 "io/ioutil" 11 "testing" 12 13 "github.com/stretchr/testify/assert" 14 "github.com/stretchr/testify/require" 15 "go.mondoo.com/cnquery/motor/providers" 16 "go.mondoo.com/cnquery/motor/providers/ssh" 17 "go.mondoo.com/cnquery/motor/vault" 18 ) 19 20 func TestEc2InstanceConnect(t *testing.T) { 21 instanceID := "i-0fed67234fd67e0f2" 22 user := "ec2-user" 23 24 pCfg := &providers.Config{ 25 Backend: providers.ProviderType_SSH, 26 Host: instanceID, 27 Credentials: []*vault.Credential{{ 28 Type: vault.CredentialType_aws_ec2_instance_connect, 29 User: user, 30 }}, 31 Insecure: true, 32 } 33 34 err := ssh.VerifyConfig(pCfg) 35 assert.Nil(t, err) 36 37 _, err = ssh.New(pCfg) 38 require.NoError(t, err) 39 } 40 41 func TestSudoConnect(t *testing.T) { 42 pCfg := &providers.Config{ 43 Backend: providers.ProviderType_SSH, 44 Host: "192.168.178.83", 45 Credentials: []*vault.Credential{{ 46 Type: vault.CredentialType_password, 47 User: "chris", 48 Secret: []byte("password1!"), 49 }}, 50 Sudo: &providers.Sudo{ 51 Active: true, 52 }, 53 Insecure: true, 54 } 55 56 p, err := ssh.New(pCfg) 57 require.NoError(t, err) 58 defer p.Close() 59 60 err = p.VerifyConnection() 61 require.NoError(t, err) 62 63 fi, err := p.FS().Stat("/etc/os-release") 64 require.NoError(t, err) 65 assert.NotNil(t, fi) 66 } 67 68 func TestEc2SSMSession(t *testing.T) { 69 instanceID := "i-0335499f012ff1a2b" 70 user := "ec2-user" 71 profile := "mondoo-dev" 72 region := "us-east-1" 73 74 pCfg := &providers.Config{ 75 Backend: providers.ProviderType_SSH, 76 Host: instanceID, 77 Credentials: []*vault.Credential{{ 78 Type: vault.CredentialType_aws_ec2_ssm_session, 79 User: user, 80 }}, 81 Insecure: true, 82 Options: map[string]string{ 83 "region": region, 84 "profile": profile, 85 }, 86 } 87 88 p, err := ssh.New(pCfg) 89 require.NoError(t, err) 90 91 fi, err := p.FS().Stat("/etc/os-release") 92 require.NoError(t, err) 93 assert.NotNil(t, fi) 94 f, err := p.FS().Open("/etc/os-release") 95 require.NoError(t, err) 96 content, err := ioutil.ReadAll(f) 97 require.NoError(t, err) 98 assert.NotEqual(t, "", string(content)) 99 100 // close ssh connection 101 p.Close() 102 }