This looks pretty sweet. Seems like it'd work well with EC2 for transparently getting you into the private hostnames without having to open security groups and use something like FoxyProxy. Anyone used it for this?
I haven't looked at it all, but it sounds like you're wanting something like the functionality that SSH's "ProxyCommand"?
As an example, we lockdown our servers so that they are only accessible via SSH from a few hosts. I got tired of SSH'ing into server A just to SSH into server B, so I set up my ~/.ssh/config file so that when I "ssh serverB", it uses the ProxyCommand functionality to basically do that for me.
When I "ssh serverB", it connects to serverA first and then connects to serverB. I could be wrong but it sounds like that is what you were talking about.
Pretty close yeah, except that serverB is only listening on a private IP, and I want to connect to it in by web browser (http). My primary use case is with hadoop clusters, where I access the jobtracker ui on the public hostname, but when I drill down into task logs it points to private/internal IPs. FoxyProxy allows me to access the private IPs directly/transparently, but I do most of my browsing with Chrome these days, so it'd be nice to just be able to do it all in one browser.
ProxyCommand looks pretty cool though, wasn't aware of it - thanks!
> ... except that serverB is only listening on a private IP and I want to connect to it in by web browsing (http) ...
Still possible, with ssh's "-D" option that basically turns a remote SSH server into a (HTTP) proxy server!
$ ssh -D 4444 serverA.example.com
Log in and keep this session active.
In your browser (I use a separate browser, permanently configured this way), configure it to use a (SOCKS5) proxy server for all traffic. The proxy server should be "localhost:4444".
In your address bar, navigate to "http://serverB.example.com". The HTTP traffic is sent over the SSH tunnel to serverA and from there it goes out to the network to its destination. To the destination server (serverB), it appears that the request originated from serverA and that's where the response will go (at which point it is again encrypted and sent over the SSH tunnel back to your local machine). Visit http://icanhazip.com (or a similar site), for example, and you'll see that, to the remote web server, it appears that traffic is coming from serverA.
This isn't the most eloquent explanation, sorry. Look into "SSH socks proxy" and you should find much better explanations. It's really much easier than it sounds! =)
Why is this even a question? It's a tool that someone will want to use. As long as there is a mouse, there will be tools that use it. You are essentially asking 'why does this tool exist', which is an irrelevant question and is needless negativity.
I'm not sure that is completely fair. He was just making the point that using only your keyboard is much faster and there are already built in tools for doing that. He may have just been asking why someone would want to use a mouse over a keyboard for this type of thing.
And the parent's point is that "why doesn't everybody use all keyboard shortcuts all the time" is a HN refrain that is tired and smug, and yet still the top-voted comment here.
And the answer is because ssh is entirely keyboard driven. There is no good reason to clumsily mouse through a drop-down menu, then move your hand back to your keyboard, when you can type "zz<enter>" in an open terminal and you're ready to go!
Cool, how do you do that with a dynamically changing list of hosts that you're getting from somewhere else? I would totally use this with a team dropbox and a .shuttle.json file full of all of our systems.
Or, put another way: think beyond your own use case before posting, yeah?
Crontab a job to generate the aliases and write them to a file, source the file from .profile. Alternately, store the list in an alias-defining file instead of json. Source directly from the dropbox.
This was my first thought too, but then I considered the case where I'm already using the mouse and want to open a terminal and ssh to an app server. With this it would be two clicks, where without out it requires a move to the keyboard, a hotkey, and two keystrokes. However, moving to the keyboard is necessary after the SSH anyway, so that step doesn't really count against the latter.
Is it for me? I'll try it, but I don't think so. But I think it serves a need for some people, and I can always get behind ideas that serve or improve--successful or not--workflow/dev needs.
Yes, I could memorize this and 2000 other arbitrary shortcuts. Or, you know, I could use the mouse.
The times per day I open a new SSH session (and I'm a heavy SSH user) are so miniscule that keyboard vs mouse wouldn't do anything than give me a false sense of superiority.
That said, I already know this Spotlight shortcut, and yet I fail to see how eleven (ELEVEN) keypresses as described above are any better than lazily moving my mouse and clicking on a dropdown menu.
No, I don't want to "have my hands down on the keyboard all the time", like they are glued there. Not even when I'm programming. I'm drinking my coffee at the same time, for one.
And my commits (including typed and discarded code) are no more than 1000 lines per day. I could write those in 5 minutes, if keyboard dexterity was all it took to program.
So fuck yeah, I'll move my hands. I move them anyways, to interact with graphical elements that do need a mouse, to drink my coffee, to grab a pen and pencil and do some rough sketch, to scratch my neck, to answer the phone, to fix my glasses and tons of other things. And to not have them go numb.
Answer: as a browser for hosts you don't use commonly.
Long ago I wrote a similar ssh target browser, in just a few lines of Perl/Tk, that pulled all the hosts from my then-employer's server database (several hundred of them, thousands if you included our dev/test VMs, and constantly changing) and created a simple tree view for reviewing and navigating the set, based on location, functional role, sequence number, customer, software level etc.
Also handy/dangerous was having it launch mirrored gterms for a given set.
Half the staff used this tool. I'd be surprised if most admins of moderate-to-large installations didn't have something similar.
They said the purpose of using a .json file was so that your configuration could be synced by dropbox or some other cloud service. I would NOT put my .ssh with all my private keys on dropbox.
Symlink'ing a ssh config file with Dropbox was the best decision I've made in a long time.
Same config file no matter which PC I am using, and you can always look up the IP/Hostname and which key it uses (don't store keys on dropbox for "critical" systems) through the dropbox web interface.
I agree with you there. I have an app that I've been building that works exactly like Shuttle but reads from ~/.ssh/config and has a front-end for editing as well.
This is amazing! I am currently in the process of moving from a Windows machine to a Mac (first Mac of my life...) and was looking for a replacement to AutoPuTTY (http://www.r4dius.net/autoputty/). This looks like it does just about the same thing. Thanks a ton!
I stay on OS X 10.6 because later versions drop support for PowerPC (Rosetta) applications. Many programs - abandoned programs and games - do not have Intel versions. And some games have Intel versions, but the Intel version costs money or is incompatible with previous saved games. I use these old programs rarely, but like to have the option of opening their files or playing those games.
Such applications include Airburst Extreme, the Fountain Music iTunes visualizer, Marble Blast Gold, N-Ball, Noise, SilverCreator v1.5, Sonic Robo Blast II, Super DX Ball, Super Phoenix, Water Tower, and Wire Hang Redux. There may be some plug-ins for various apps I'm forgetting, too.
>Such applications include Airburst Extreme, the Fountain Music iTunes visualizer, Marble Blast Gold, N-Ball, Noise, SilverCreator v1.5, Sonic Robo Blast II, Super DX Ball, Super Phoenix, Water Tower, and Wire Hang Redux. There may be some plug-ins for various apps I'm forgetting, too.
Sounds like nothing like a reason to keep using Rosetta. I mean, seriously, "Fountain Music iTunes visualizer" and "Sonic Robo Blast II"?
Some business use case I'd understand (some proprietary program that you just have to use). But those? Find some substitute games and programs and move on.
>I use these old programs rarely, but like to have the option of opening their files or playing those games.
Sounds more like a soft case of hoarding to me.
In any case, just move to 10.8 and keep 10.6 on a VM (or a bootable USB/external drive) for those games.
It’s true, I hoard a lot of digital things. Keeping a VM sounds like a good solution that allows me to upgrade to the latest OS without permanently losing any programs.
However, I think that the Fountain Music iTunes visualizer (http://binaryminded.com/fountainmusic.html) is actually the program I’ll miss the most after I upgrade. I enjoy listening actively to my music, paying attention to the musical details. And the visuals produced by Fountain Music, unlike every other visualizer I’ve seen, actually reflect the audio very well. It’s not just a mesmerizing screensaver that is theoretically tied to the audio somehow – you can clearly hear a connection between each note playing and each fountain of particles shooting up. The fact that the visuals reflect the music (most of the time) can put me more emotionally into the track, because I’m getting complementary signals through my eyes and ears.
Also, there is rarely such a thing as “substitute games”. That’s what makes games different from other programs – well-made games, even ones in the same genre, have their own unique, irreplaceable features. They are like books and movies in that regard. That’s why emulators for consoles like the SNES and the Dreamcast are still around – people don’t want to give up their favorite old games.
See apple.com for your answer. I can't believe on hn you'd ask why anyone should upgrade. Being on the latest version is more secure for one. People can stick with old versions, but then they'll miss out on the new stuff. For some that doesn't matter, but most of hn are early adopters so using the latest would be the norm. While osx has introduced some annoying changes, for those with the skills, or the ability to use google, they are easily disabled.
Looking at apple.com's list of features for mountain lion
Lets see what was added in mountain lion that I would use:
* Improved preference pane (OK, this might be good)
* Accessibility pane available from anywhere (No)
* New braille display support (No)
* Voice Over stuff (no)
* AirPlay Mirroring (Don't have anything that can use that)
* Auto Save (Don't really want this, I use vim for most things anyway)
* Built-in Sharing (Might be cool, but meh)
* Calendar (I use google calendar, so no)
* Contacts (I don't use this)
* Dashboard (I don't use that)
* Dictation (Cool, but no)
* Dictionary (Not really using this either)
* Facebook (Nope, not using any of that)
* Features for China (I don't need these)
* Finder (lets take a closer look)
* Inline progress for downloads and file copies (Ok, not bad, but I don't normally mount any servers or stuff. I can just scp stuff that I need, or git pull)
* Easy encryption (Yay, this is neat)
* Share button (Nope)
* Customizable sidebar (Huh, wasn't it customizable before?)
* Tap for Quick Look (This is neat, I'll use it a few times)
* Game Center (Dont' care)
* Gatekeeper (Don't want)
* iCloud (Not going to use)
* Launchpad Search (Don't use launchpad)
* Mac App Store (Nothing really great in here)
* Mail (I use gmail, so don't care)
* Messages (Don't use)
* Notes (Might be cool, but I don't think I'll use.)
* Notification (I already use Growl, don't really need this, it's just going to be another thing to configure. Maybe I'll like it, I don't know)
* Photo Booth (Now you can add pictures to Twitter! Don't need that)
* Power Nap (Might be cool)
* Preview (I use Skim.app, so don't care)
* QuickTime X (Don't really care)
* Reminders (Don't really care)
* Safari (I'm using Chrome)
* Security (Some stuff might be good, nothing super important)
* System (Nothing too great in this section)
* TextEdit (I use vim)
* Time Machine (I only need one place to backup, so the multiple places to backup isn't that important right now (might be in the future), but the encrypted back ups are nice)
* Twitter (Don't care)
So I get:
* Improved preference pane
* Power Nap
* Easy encryption
* Tap for Quick Look
* Time Machine
Not really worth the price of updating.
I guess I'll update once the next one comes out, since they fix multiple monitors with Mission Control to work more the way I like it.
That might be true for 10.7 to 10.8, but 10.6 to 10.8 is a bigger gap. It's all that you listed (and most users would gain more than that) plus ASLR, TRIM support, resizing windows from any edge, AirDrop, improved Finder, much better multi-touch support, the recovery partition, etc.
I was reluctant to upgrade from 10.6 to 10.7 because I really disliked the changes to Spaces/Expose, but even last year it was becoming more and more common to see apps dropping support for 10.6. With Mavericks around the corner, 10.7 will start seeing the same treatment soon. At $20 to upgrade, it's more than worth it.
Because SL had a far better workflow. 10.8 may have a cleaner, flatter, better-looking UI and some nice kernel features underneath, but Mission Control is a disaster compared to Spaces + Exposé.
I still dual-boot 10.6 and 10.8. I find myself in 10.8 more often now, but 10.6 is still a better user experience.
For a long time I was adding aliases to .ssh/config manually and managing things that way but a coworker introduced me to a couple of tools which made things much easier!
One is a tool similar to Shuttle to access all our EC2 instances called Elastics[1] (Mac). It provides a menu listing every EC2 instance, showing it's status, IPs, config details, cpu usage, etc and allows you to click to open SSH. It's not perfect but very handy!
I also use an in-house tool which queries the EC2 API to sync my .ssh/config with aliases for every server based on EC2 tags. If you're interested it's built with node.js using awssum [2] to query AWS and sshconf-upsert [3] to update the config.
Menu->Configure opens the configuration file in TextEdit, which is a disaster since it has smart quotes on by default. I spent a significant amount of time trying to figure out was wrong with your json parser before I realized what was going on.
It was opened as plain text. That option is orthogonal to smart quotes, although it turns out those can be turned off globally as well. Thanks for leading me in the right direction.
I still think there must be a better way to do it for Shuttle, though, given what the defaults are. Even something as hacky as replacing smart quotes with normal ones before json parsing would be pretty useful.
I used the built-in Quicktime Player to do a screen recording. Then I used an online mov-to-gif converter. I had a hard time getting it down to a decent size, though. Hope that helps!
If anyone needs something similar for Windows, use https://gist.github.com/arnehormann/5975783 and put all shortcuts with a folder into the quickstart part of the taskbar. The hta file I link to is html with visual basic instead of JS - executable on click, pretty compact, shows a dialog. Don't know if this breaks in later Win versions though, I wrote this some years ago and it worked fine in Vista...
Maybe I should have upgraded before switching to OS X :)
My approach still has one advantage: I have 60 user/server combinations and can order them by user/rack/whatever by using subfolders.
And it's possible to assign custom icons, which I never did...
I have a widget like this for AWS+Virtualbox, it sorts all instances across all regions into tag name groups, by ip, by region, and by instance type. Unfortunately I know it only works for Windows and linux at the moment and my company hasn't given me a green flag to release it.
Still this project is a lot prettier and appears to have been more refined while mine was hobbled together in a hour or two and fit in one Python file ( reasonably, its not 10 files in one ).
Yet another way to have clickable short-cuts for opening SSH connections using OS X (Safari only): OS X understands URL schemes like ssh://username@hostname.tld:port. Throw it into the address bar or even save this as a bookmark. Safari asks for permission before opening such non-http protocols nowadays and transfers you to Terminal.app. Pro: Less clutter in menu bar. Con: Safari only. (As for me, I prefer ~/.profile and 'alias').
I was actually going to do this at first. Something as simple as openURL:"ssh://username@example.com", then let OS X handle opening the default terminal. But I wasn't able to easily specify things like a different private key (for AWS or Vagrant). This at least gives the user the ability to specify any option that they could also specify on the command line.
Right. Nevertheless, this tiny little menulet might be a nice starting point for all those people who are not too experienced with secure shell sessions.
For a similar set-up for Linux, see [1]. Here we use dmenu to displays hosts defined in .ssh/config, and open a connection to the selected host in a new window. See [2] for the relevant script.
Very nice! This is almost exactly like an app I've been slowly chipping away at since last September, except my project acts as a front-end for reading and editing the ~/.ssh/config file.
Still haven't gotten anything released but my WIP builds have certainly proven useful in my daily workflow. Has been a nice project for teaching myself Obj-C too!
Cute idea but I prefer to set up these profiles in iTerm2 because when I ssh somewhere, I usually use a different background to differentiate the various hosts (production, staging, etc...).
I also tend to split iTerm2 horizontally and vertically and create ssh sessions in tabs, so I hardly ever need an ssh session in a brand new window.
Aliases in ~/.ssh/config are my preference, but if clicking with the mouse is your thing, why not throw Terminal.app in the Dock and click/hold the icon? Choose New Remote Connection... and you can save all your services and hosts right there. No additional processes running or clutter in the menubar.
Yep. Also, I understand what other people are saying about already having aliases, I do too. But, as a visual list of servers I can ssh into it is a nice reminder. Plus there are some files that I edit only from time to time (php.ini, apache config, etc). I made shortcuts that throw those files into my editor. Call me an amateur, but when I have to edit some of those my first question is usually, where the hell is that file again? Anyway, I find this tool useful.
Terminal already does most of this, right? Preferences -> Settings -> "+" -> Shell -> Run command "ssh user@hostname". And you can set the background color &c for each host.
As a quick feature suggestion, I wonder if it's possible to have a shortcut key to get into the menu, and then possibly shortcut keys to every entry in the list?
I made alias' in my .bash_profile to handle this shortcut need, although, for servers that I don't access often, it might be nice to have the dropdown list as a reminder.