From the Terminal
If you're like me you need to login to multiple servers via SSH on a daily basis. For many years when I was younger I typed in the whole IP or hostname of a server everytime I wanted to login to that server. After learning how to use the ssh config file logging into your SSH machine can be cut down to just a few keystrokes.
The SSH config file is always in ~/.ssh/config
Here's a template you can use.
Host alias HostName example.com User user IdentityFile /Users/user/.ssh/mykey_rsa
You can create as many entrees in the file as you like.
- Hostname can be a DNS resolved domain name or an IP address but that is what SSH will try to actually connect to.
- Host is actually just the name of this entry in this case I used "alias".
- User when you type in the SSH command in terminal you can specify a user like normal but if you don't it will use the option you put in
- IdentityFile is an optional setting to specify your private key SSH key.
When I type in ssh alias in the terminal it will simply connect to example.com as user.
Here's an example
Host henryparadiz.com hp Hostname henryparadiz.com User henry IdentityFile /Users/henry/.ssh/personal_rsa
henry@Coder-Laptop:~$ ssh hp Enter passphrase for key '/Users/henry/.ssh/personal_rsa': Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 23 packages can be updated. 13 updates are security updates. Last login: Mon Apr 16 05:26:15 2018 from 127.0.0.1
Notice how I use the second alias under the host option simply "hp" which allows me to shorten the entire command to just the above. Easy and simply way to speed up your development.
With OpenSSH, port forwarding is configured using the -L option.
You can initiate a port forwarding operation with this command:
ssh -L 80:example.com:80 technex.us
In this example we are telling OpenSSH to open port 80 on the current machine to example.com on port 80 from the server we are connecting to. In this case the server is technex.us.
Don't forget that anyone can connect to this port on your machine so you might want to limit connects to localhost by telling OpenSSH to listen on a specific IP. In this case you can specify 127.0.0.1 like so:
ssh -L 127.0.0.1:80:example.com:80 technex.us
Since this is OpenSSH you can actually use the alias you specified in your ~/.ssh/config file.
I talk more about the OpenSSH config file here.
Building on top of that guide if you want to maintain a port forward everytime you connect to a specific machine you can use this syntax:
Host alias HostName technex.us User user IdentityFile /Users/user/.ssh/mykey_rsa LocalForward 127.0.0.1:80 example.com:80
Now you can simply type in ssh alias in terminal and be connected with a port forward.