Technically, SSH does all that by means of 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).
– Jason SalazOct 25 '12 at 20:34

I'm not able to locate this file. Could you expand on this as an answer? This could be a viable solution.
– Steve RobbinsOct 31 '12 at 19:09

It isn't free, but many formers co-workers of mine swore by JellyFiSSH for managing connection info. It's currently $4 in the Mac App Store.
– Jason SalazNov 2 '12 at 11:48

10 Answers
10

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.

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?

I have no experiences with this App: ZOC - I only did a quick Google on "OS X telnet GUI" and got a link to this product as the first hit - but it seems to do the same as PuTTY.

There is a 30 days trial available.

ZOC is a professional SSH/telnet client and terminal emulator. With its impressive list of emulations it lets you easily connect to hosts and mainframes, using communication methods like secure shell, telnet, serial cable or modem/isdn.

Its sleek user interface has many ways of making your life easier. In its own way, ZOC is the Swiss Army Knife of terminal emulators: versatile, robust, proven.

Jason's answer is definitely the way to go, but I'd like to point out a feature of Terminal that may be useful.

Within Terminal, you can make a direct connection to a remote machine similar to the way PuTTY does, without first opening a terminal window on the local machine. Simply select Shell->New Remote Connection... (cmd-shift-K). In the window that pops up, you can add any SSH server to the right-hand column, including aliases defined in the ~/.ssh/config file.

Using Jason's example, you would select "Secure Shell" as the service on the left, and then add "serve" to the list of servers on the right.

In the future, you can open the dialog box (much like the main PuTTY window) and double-click the entry for the server you want to connect to. The only difference between this and PuTTY is that you put custom configuration settings in the ~/.ssh/config file, which I see as a huge advantage.

Once you have an ssh-key on your server and your Mac, you could login with a command such as:

ssh username@10.0.0.1

Using an alias within ~/.bash_profile you could shorten the command with an alias such as:

alias s10="ssh username@10.0.0.1"

Then in iTerm2 you only need to execute a command:

s10

to log into the server at 10.0.0.1 using ssh key login.

To store your session log (commands you've run) iTerm2 does this automatically, but you can adjust the amount of session logs you'd like to keep within Preferences -> Default profile -> Terminal -> Scrollback buffer. Tick the box for Unlimited scrollback if you prefer.

You can also store your logs indefinitely, between sessions by saving them to files. Preferences -> Default profile -> Miscellaneous -> Automatically log session input to files in [your chosen file on drive].

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

8

Could you expand on this answer? Adding more information about what this program does and how it answers the question would be good. From a brief look at the site, it appears to be more of a remote desktop client. If it does SSH, that's great, but some more information would improve this answer.
– robmathersOct 25 '12 at 20:47

-1 not even good information there (not even sure it's an ssh client). still beta, preorder.
– GrezgoryJun 12 '13 at 12:13