7 ms·
Shuttle - A simple SSH shortcut menu for OS X
- bluedino 13y agoDoesn't everyone do this with sessions in iTerm? Right-click on the dock icon and then pick your server...
- thehodge 13y agoJust installed this, really nice little shortcut for the servers I connect to.
- myoffe 13y agoWhat is that cool shell prompt that's in the video?
- tixzdk 13y agoI second this!
- johndoe77 13y agoAgreed, that is a must have.
- fitztrev 13y agoI use iTerm2 (with Solarized theme), zsh, and Oh My Zsh (with the agnoster theme).
- PascalW 13y agoI think it's Powerline [1] or at least inspired by Powerline. [1] https://github.com/Lokaltog/powerline https://github.com/Lokaltog/powerline
- schrodingersCat 13y agoThanks for the share. Its a great theme
- andyhmltn 13y agoYeah it looks great. Was just about to ask that myself haha
- Gurrewe 13y agoIt's powerline-shell https://github.com/milkbikis/powerline-shell https://github.com/milkbikis/powerline-shell
- davman 13y agoThanks for this, will be saving me time. 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?
- PascalW 13y agoNice job, for me it can't beat a ~/.ssh/config entry though. I wonder why it's not reading ~/.ssh/config btw, should be doable.
- zeckalpha 13y ago"... it makes it easy to generate a dynamic list of hosts from your hosting provider (if they have an API), so you're always up-to-date." It should at least provide a mapping from the json to ~/.ssh/config formats.
- sneak 13y agoThe Host directive in an ssh_config file supports wildcards.
- schrodingersCat 13y agoThey 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.
- eieio 13y agoYou could just make ~/.ssh/config a symlink to your config file in your dropbox folder. No need to put private keys on dropbox.
- thejosh 13y agoYep. 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.
- schrodingersCat 13y agoI agree, this would make a lot more sense...
- nicholassmith 13y agoThis is a clever little utility, I've got my setup mostly scripted off but I'm sure I'll find a use for it.
- ch0wn 13y agoNot to be confused with sshuttle, a transparent proxy server that forwards over SSH: https://github.com/apenwarr/sshuttle https://github.com/apenwarr/sshuttle
- cpenner461 13y agoThis 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?
- jlgaddis 13y agoI 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. Here's what it looks like in ~.ssh/config: Host serverB ProxyCommand ssh serverA.example.com -W %h:%p 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.
- cpenner461 13y agoPretty 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!
- jlgaddis 13y ago> ... 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" 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 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! =)
- andyhmltn 13y agoThis looks pretty awesome! I will try it out when I get back. I usually just add a load of shortcuts to my hosts file but even that's a pain.
- yankcrime 13y agoFor me you can't beat the combination of Alfred [0] and the SSH workflow [1]. [0] http://alfredapp.com http://alfredapp.com [1] https://github.com/isometry/alfredworkflows/tree/master/net.isometry.alfred.ssh https://github.com/isometry/alfredworkflows/tree/master/net....
- Osmium 13y agoOr (in Alfred) just type: >ssh [host] If you keep your ~/.ssh/config up to date and can remember your host names, I find it quicker to do that than bothering with the workflow.
- aidos 13y agoI had no idea you could execute commands from Alfred that way. Top tip! Thanks.
- hydrozen 13y agoI don’t think alfred does that by default, does it? Even with the powerpack.
- BHSPitMonkey 13y agoAssuming it just runs it as a shell command (and fires up a shell in doing so), that would work.
- hydrozen 13y agoAhh ok, I misread what he was saying! Missed that > at the beginning.
- Spiritus 13y agoYou should probably add some install instruction for the workflow, because I have no idea where to start.
- 13y ago
- TheBrockEllis 13y agoThis 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/ http://www.r4dius.net/autoputty/). This looks like it does just about the same thing. Thanks a ton!
- coreymaass 13y agoCongrats and welcome to the fold :-)
- duiker101 13y agoIs it just me or people are really lacking with names? Rocket, shuttles and similar seems a bit overused...
- daviddoran 13y agoInstalled. Nice little utility. As others probably do, I have ~/.ssh/config set up so that it's as easy as `ssh us1` to SSH into a server.
- oellegaard 13y agoInstant win
- jrode 13y agoI love this more than for just ssh. I added a few other common commands into the menu for easy access.
- nickpersico 13y agoThat is a great idea. Thanks!
- jrode 13y agoYep. 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.
- mimiflynn 13y agoI 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.
- sneak 13y agoI have two-byte aliases for ssh to all of the hosts I use commonly, doesn't everyone? (It even reattaches my remote screen session.) Why would I want to touch the mouse?
- rickhanlonii 13y agoThis 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. Great work Trevor!
- sneak 13y agoCommand-space t e r enter Command-n zz enter
- coldtea 13y agoYes, 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.
- HendrikR 13y agoYet 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').
- fitztrev 13y agoI 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.
- normalocity 13y agoI like how the name "Shuttle" implies that this is going to make your SSHing experience "take off", but anyone with an SSH config file is like: "You mean you weren't doing this years ago? Why do I need a UI to get to a shell command? I'm already in the shell!"
- igravious 13y agoAargh. Only works in 10.8.x - I like new tech but I see no need to upgrade beyond 10.6.8 at the mo' :(
- joshstrange 13y agoI'm not trying to be jerk but, why?
- diggan 13y agoInstead of asking yourself why you should'nt upgrade you should probably ask youself why you should. So what's the reason for upgrading?
- hnriot 13y agoSee 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.
- Tyr42 13y agoLooking 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.
- arnehormann 13y agoIf anyone needs something similar for Windows, use https://gist.github.com/arnehormann/5975783 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...
- kryten 13y agoOr even better, right click putty on your taskbar in windows 7 and all your profiles are listed.
- arnehormann 13y agoMaybe 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...
- kryten 13y agoTrue. I only connect to two hosts and ssh on from there so non issue for me.
- asayers 13y agoFor 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. [1]: http://www.asayers.org/blog/ssh.html http://www.asayers.org/blog/ssh.html [2]: https://gist.github.com/asayers/5975856 https://gist.github.com/asayers/5975856
- kevin818 13y agoCould anyone recommend a good/free program for making these kind of animated gifs that record your computer (like the one on Shuttle's homepage)? I've been trying to add the same kind of thing to my site but I don't know how to do it.
- fitztrev 13y agoI 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!
- loupeabody 13y agoI've heard and seen many good things about LICEcap[0]. There doesn't appear to be a Linux install, just so you know. [0]http://www.cockos.com/licecap/ http://www.cockos.com/licecap/
- D9u 13y agoI use ffmpeg to record my desktop and convert the output to animated gif. I'm not sure about OS X, but FreeBSD and Linux distros should have ffmpeg in ports/repos. There's also byzanz for ubuntu.
- deleted 13y ago[deleted]
- Axsuul 13y agoSomething like this would be awesome for vagrant!
- fitztrev 13y agoIt actually works pretty well with Vagrant. In fact, I even have Vagrant in the sample config file to show how it's done. :) https://github.com/fitztrev/shuttle/blob/master/Shuttle/shuttle.default.json#L37 https://github.com/fitztrev/shuttle/blob/master/Shuttle/shut... Basically just do `vagrant ssh-config box_name_here` to get the port and identity file that you need to specify in the SSH command.
- txutxu 13y agoHaving exactly the same in fluxbox since more than 10 years ago... And more "dynamic" and "generated" menus (all that is needed is the "include" directive in the menu handler and cron).
- geeksunny 13y agoVery 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!
- thedufer 13y agoMenu->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.
- afshin 13y agoYou can change the TextEdit preferences to always open files up as plain text instead of rich text if this annoys you, by the way.
- thedufer 13y agoIt 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.
- nicwolff 13y agoTerminal 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.
- jeffrogers 13y agoAliases 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.
- CptCodeMonkey 13y agoI 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 ).
- brian_herman 13y agoYou should keep the fact that it runs ordinary commands. It is like a shortcut menu for the command line which is awesome.
- sev 13y agoToo bad it does not work with Leopard...so it becomes useless to me. Otherwise looked like a nice idea!
- math0ne 13y agoOn windows 7+ putty does this by default.
- jameswyse 13y agoFor 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. [1] http://tundrabot.com/ http://tundrabot.com/ [2] https://github.com/awssum/awssum https://github.com/awssum/awssum [2] https://github.com/hughsk/sshconf-upsert https://github.com/hughsk/sshconf-upsert
- jgarnham 13y agoWhat's he using in the video to give the almost path bar effect for the prompt in terminal?
- fitztrev 13y agohttps://twitter.com/fitztrev/status/355340535659122688 https://twitter.com/fitztrev/status/355340535659122688 It's actually the Solarized Dark, to be more specific. :)
- laureny 13y agoCute 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.
- pclark 13y agoI love the design of this, from the animated gif tour, to the .json config
- maslam 13y agoIgnore the disparaging comments in Hacker News. This is really nice. Thanks for your heard work - I'm using it already!