Show HN: Teleport – SSH for Clusters and Teams
gravitational.com
gravitational.com
How would authentication work with configuration management? I see that new nodes are authenticated with a one-time token generated from the auth server, but that seems like it could be tricky to implement in a dynamic cluster (like an AWS auto scaling group).
Internally we use Teleport as a library to connect multiple clusters into a structured system of doing ops with solid identity management, but we figured it deserves to be its own tool, especially because so many larger companies in the Valley have built something similar internally.
2) Does it ever capture passwords (or any other non-echoed characters) by accident?
3) Does it require a TTY?
4) Can it multiplex sessions across multiple servers?
We capture and replay the whole stream, so playback works well with top/mc/emacs/vim etc
> 2) Does it ever capture passwords (or any other non-echoed characters) by accident?
If you accidentally type in password in your active session that will be visible, session capture will record it, yes. We plan on encrypting everything just in case at rest though:
https://github.com/gravitational/teleport/issues/262
> 3) Does it require a TTY?
You'd need PTY for interactive sessions, however `exec` will work through ssh just as well (as long as teleport talks vanilla SSH)
> 4) Can it multiplex sessions across multiple servers?
Yes, we just did not expose it in the UI yet
Also, most importantly, are there man pages?
http://gravitational.com/teleport/docs/quickstart/
but haven't packaged it all into man pages yet
Of course, this raises a few security questions:
1. Do I have to run this as a server on every host I intend to ssh into? Or can it use existing installations of openssh for that? 2. Is this re-inventing any authentication mechanism? If yes, how robust is it and how thoroughly has it been tested? (I'm guess not much right now, since this isn't production ready yet, but the question will remain for a while.) 3. Do I have to use a different client? Or are existing ssh clients fully sufficient? The article does mention compatibility with OpenSSH, but does not detail. It also mentions using HTTPS as a transport instead of SSH, which is concerning in the case of compatibility.
1. You don't have to. http://gravitational.com/teleport/docs/admin-guide/#using-te...
2. It uses existing SSH protocol features, that's why OpenSSH clients and servers are fully compatible.
3. See above. Regular `ssh` will work, but `tsh` may be a bit more convenient.
4. HTTPS is used to perform 2nd factor authentication initially. Once you received your session key, it switches to SSH for the duration of a session.
Edit: formatting
Otherwise looks like a cleverly designed system. Being able to use a standard terminal emulator to connect would be nice though.
> tsh --proxy=work ssh os=linux df
also, as mikeokner noticed, if you already using ansible, ansible-shell should work out of the box as well.
We use existing 2FA HOTP based access control in the first release mostly to get a good quick start experience and we understand that big organizations will plug in Teleport into their existing auth infrastructure.
In terms of making LDAP/RADIUS easier, well, we're a YC company that does just that! Foxpass (S15) https://www.foxpass.com/.
With it one would be able to connect only through wweb console ? (couldn't find it on the docs)
you can connect using standard ssh client
http://gravitational.com/teleport/docs/admin-guide/#using-te...
or use little tsh tool we wrote:
http://gravitational.com/teleport/docs/user-manual/#interact...
they all work well, as it's all standard SSH protocol behind the scenes
https://gravitational.com/teleport/docs/admin-guide/#using-t... - Ansible section
We are also thinking about deeper integration with state of the art automation and deployment tools.
I'll be honest, my first knee-jerk, HN conditioned, reaction to this was similar to yours, but I've been trying to temper my first reactions, especially when they are negative.
Not the most central thing, but something that put me off a little was that they offer a command to filter the listings...had these people never heard of grep? The playback of terminal sessions is cool though, although I swear I've seen someone else do that somewhere...
The reason `tsh` takes label filters as an argument to all of its sub-commands (not just "ls") is to perform actions only on machines that fit the criteria, maybe you want to "tsh scp" a file to all "distro=debian" nodes, or you want to "tsh ssh role=postgres_master" not knowing which node is the master at this time.
The background story behind these little "niceties" is this: internally we've always wanted to have a bit of Ansible-like slice&dice magic in interactive mode for raw SSH, so we've built it and sharing it: perhaps someone else would find it useful.