PuTTY is a great Windows frontend, not to mention the need for an SSH client in the first place. On Linux, OS X, and most other UNIX-y based environments, SSH is generally purely command line, but still amazingly powerful.
The SSH client allows you to store an amazing amount of properties based on a given hostname, even global defaults, in the "ssh_config" client file. This file doesn't exist by default (per the comments on the question), but should be written at ~/.ssh/config
.
That path equates to:
~
, your home directory, it expands on my system to /Users/jason
.
.ssh
, the leading dot makes it hidden. If you're in Terminal and in your home directory, you can simply run cd .ssh
and enter it.
config
is the file name, it is a plain text file with configuration parameters.
I use this file to control tunnels I always use, the private key needed for the connection, the username (if it differs from my local username), etc.
See the manpage, either via man ssh_config
on your own machine which will contain the most appropriate version, or you can view it online from OpenBSD's Site.
Some example contents from my ssh config file are:
ControlMaster auto
ControlPath ~/.ssh/sockets/master-%r-%h-%p
VisualHostKey yes
Host serve
Hostname 8.8.8.8
User jason
IdentityFile ~/.ssh/id_rsa
LocalForward 5901 localhost:5901
Whitespace is purely personal preference, it is not required except to separate Keys from Values.
The first three lines are global properties, they affect every SSH connection. The second section is a host-specific configuration.
The Host
line specifies the host tag you will use when invoking ssh
. Ex. ssh serve
. When running that, it loads all the properties listed until the next Host
line.
Since serve
is not necessarily a DNS name, I specify the Hostname
that it should actually connect to (no, not actually mine). User
is self explanatory and there just to be explicit, and the IdentityFile
is the path to the Private Key file it uses to connect.
Lastly, LocalForward
sets up a port forwarding rule that I send through the SSH tunnel.
The various syntaxes are all documented on the man page.
There is no mechanism for defining a plain text password. Password entry is ALWAYS interactive when setting up the SSH connection. If you want to log in automatically, set up Private Key Authentication. Storing plain text passwords is stupid, always.
I use this to great effect. And the best part? All your SSH configurations are incredibly portable, it's just one file that you have to backup/retain, and move between system to system! Not so portable to Windows, but who really likes dealing with the registry anyway?
ssh_config
(~/.ssh/config
), but I'll keep my neckbeard at bay and understand that editing a plain text file with a defined format is not for everyone. I give PuTTY a lot of credit for it's setup (and a lot of grief too, admittedly).