ish
connects you to a server in your AWS account based on properties of the
server. Notably useful when you don't care which server exactly, just a
server of a particular type.
Currently you can connect to servers based on their:
- name tag
- environment tag
- instance id
- autoscaling group membership
- opsworks instance name (oin)
- opsworks stack name (ois)
- image id (AMI)
If more than one server matches the attribute, it will pick one and connect you to it.
If you pass additional parameters, they will get appended to the ssh command.
In the example command, /usr/bin/ssh ip_address echo "hello_there"
is the
run command:
$ ish name:openvpn echo "hello there"
hello there
ish
also supports autocompletion (read below.)
You can install via:
- setuptools using
python3 setup.py install
and source thecontrib/ish-autocomplete
script. - Homebrew using
brew install https://raw.githubusercontent.com/grahamc/ish/master/ish.rb
To improve performance, instance metadata is stored in $HOME/.ish.json
. This
file should be automatically replaced if it is over 60 seconds old, but delete
it if you experience issues.
ish
uses boto3
which uses the standard AWS configuration stack. Read more
here: https://boto3.readthedocs.org/en/latest/guide/configuration.html#configuration-sources
The command run is ssh IP
. If you want to set additional configuration
settings, please use your ~/.ssh/config
.
An example SSH configuration might be
Host 172.*
StrictHostKeyChecking no
IdentityFile ~/.ssh/keys/aws-keys
User yourusername
You might find this article helpful if you use a bastion / jump-host instead of a VPN: http://edgeofsanity.net/article/2012/10/15/ssh-leap-frog.html
A full list of supported targets can be found with ish --completion
, and a
bash and zsh compatible autocomplete script is found in ./contrib/
.
Targets with spaces in them must be quoted, but will be autocompleted without them. Example:
$ ish name:Logstash Ingestion
flake8
must pass with no exceptionscoverage
must report 100% coverage- it must run perfectly on python 3, python 2 is not supported.