Need help with gossm?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

gjbae1212
239 Stars 29 Forks MIT License 119 Commits 7 Opened issues

Description

💻Interactive CLI tool that you can connect to ec2 using commands same as start-session, ssh in AWS SSM Session Manager

Services available

!
?

Need anything else?

Contributors list

# 168,977
unix
golang
HTML
session...
82 commits
# 227,092
debian
Ubuntu
php7
Laravel
3 commits
# 136,167
Symfony
PHP
golang
beansta...
1 commit
# 79,477
GraphQL
golang
dataloa...
Shell
1 commit

gossm

gossm
is interactive CLI tool that you should select server in AWS and then could connect or send files your AWS server using start-session, ssh, scp under AWS Systems Manger Session Manager.

license Go Report Card

Overview

gossm
is interactive CLI tool that is related AWS Systems Manger Session Manager. It can select a ec2 server installed aws-ssm-agent and then can connect its server using start-session, ssh. As well as files can send using scp.
If you will use
gossm
tool, this mean there will no need to open inbound 22 port in your ec2 server when is using ssh or scp command.
Because AWS Systems Manger Session Manager is using ssh protocol tunneling.

Additionally Features -
mfa
command has added. this command is to authenticate through AWS MFA, and then to save issued a temporary credentials in $HOME/.aws/credentialsmfa. (default expired time is after 6 hours)
You should export global environment, such as `export AWS
SHAREDCREDENTIALSFILE=$HOME/.aws/credentials_mfa`.
With completed, you can execute AWS CLI and gossm conveniently without mfa authenticated.
Refer to detail information below.

Prerequisite

ec2

  • [required] Your ec2 servers in aws are installed aws ssm agent.
  • [required] ec2 severs have to attach AmazonSSMManagedInstanceCore iam policy.
  • If you would like to use ssh, scp command using gossm, aws ssm agent version 2.3.672.0 or later is installed on ec2.

user

  • [required] your aws access key, aws secret key
  • [required] ec2:DescribeInstances, ssm:StartSession, ssm:TerminateSession, ssm:DescribeSessions, ssm:DescribeInstanceInformation, ssm:DescribeInstanceProperties, ssm:GetConnectionStatus
  • [optional] It's better to possibly get to additional permission for ec2:DescribeRegions

Install

Homebrew

# install
$ brew tap gjbae1212/gossm
$ brew install gossm

upgrade

$ brew upgrade gossm

Download

download

How to use

global command args

| args | Description | Default | | ---------------|-----------------------------------------------------------|------------------------| | -c | (optional) aws credentials file | $HOME/.aws/credentials | | -p | (optional) if you are having multiple aws profiles in credentials, it is name one of profiles | default | | -r | (optional) region in AWS that would like to connect | |

If your machine don't exist $HOME/.aws/.credentials, have to pass

-c
args.
```

credentials file format

[default] awsaccesskeyid = AWS ACCESS KEY awssecretaccesskey = AWS SECRET KEY ```

-r
or
-t
don't pass args, it can select through interactive CLI.

command

start

$ gossm start 

ssh, scp

-e
must pass args when is using scp.
-e
args is command and args when usually used to pass ssh or scp. ```bash

ssh(if pem is already registered using ssh-add)

$ gossm ssh -e '[email protected]'

ssh(if pem isn't registered)

$ gossm ssh -e '-i key.pem [email protected]'

ssh(if pem is already registered using ssh-add and don't pass -e option) -> select server using interactive cli

$ gossm ssh

ssh(if pem isn't registered and don't pass -e option) -> select server using interactive cli

$ gossm ssh -i key.pem

scp(if pem is already registered using ssh-add)

$ gossm scp -e 'file [email protected]:/home/blahblah'

scp(if pem isn't registered)

$ gossm scp -e '-i key.pem file [email protected]:/home/blahblah'

**ex)**  

cmd

-e required args, it is a parameter for execute to command on selected servers.

```bash

It is to execute a command("uptime") on selected multiple servers, waiting for a response on its result.

$ gossm cmd -e "uptime"

fwd

-z
Optionally specify the remote port to access
-l
Optionally specify the local port to forward (If not specified when using
-z
, then this value defaults to the value of
-z
)
$ gossm fwd -z 8080 -l 42069

If not specified, you will be prompted to enter a remote and local port after selecting a target.

mfa

-deadline
it's to set expire time for temporary credentials. default is 6 hours.
-device
it's to set mfa device. default is your virtual mfa device.
bash
$ gossm mfa 
Must set to
export AWS_SHARED_CREDENTIALS_FILE=$HOME/.aws/credentials_mfa
in .bash_profile, .zshrc.

ex)

LICENSE

This project is following The MIT.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.