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  }