Why aren’t we using SSH for everything? (2015)
1–10 of 87 posts
Re: Why aren’t we using SSH for everything? (2015)
#2> RPC API
Please don't. Managing SSH sensibly (with checking keys properly) in any greater scale is awful. SSH was never meant for general communication, which reflects how it operates on implementation level and on protocol level. SSH servers require usable home directory locally and remotely (OpenSSH has some workarounds, but this quickly becomes ugly), you need to manage SSH keys, both public and local, and protocol has plenty of options useful for interactive administrative service, but terrible from security standpoint (have you disabled everything unnecessary? and are you sure it was everything?). If you use SSH in non-interactive, non-supervised mode, it is a disaster waiting to happen.
> Why aren’t we using SSH for everything?
Because it is not suited for everything. It is only suited for providing shell and for some non-interactive but human-supervised tasks.
Re: Why aren’t we using SSH for everything? (2015)
#3Will it? What is the proxy server happens to have a key whose fingerprint hash is the same as the original server's key?
SSH very recently upgraded how keys are fingerprinted; the screenshots in this article are the old method, which as I learned recently, are MD5 hashes. (I had thought they were SHA1.) SHA-256 is what gets used now. But, for example, Ubuntu's LTS doesn't have the update. I'm glad they made the change, but I'm left wondering how key exchanges aren't somewhat vulnerable on unupgraded machines.
(e.g., fingerprints now look like:
SHA256:7h5Q0O1Qc8G7Hv/hVIrx1d6ZTgnITwrutr1XDBYY0sg
)Re: Why aren’t we using SSH for everything? (2015)
#4Re: Why aren’t we using SSH for everything? (2015)
#5> Programmatic Data Streams > RPC API Please don't. Managing SSH sensibly (with checking keys properly) in any greater scale is awful. SSH was never meant for general communication, which reflects how it operates on implementation level and on protocol level. SSH servers require usable home directory locally and remotely (OpenSSH has some workarounds, but this quickly becomes ugly), you need to manage SSH keys, both…
> Managing SSH sensibly (with checking keys properly) in any greater scale is awful.
The certificate key format introduced by OpenSSH allows for quite easy large-scale key management so long as your clients and servers are OpenSSH or golang x/crypto/ssh
Re: Why aren’t we using SSH for everything? (2015)
#6> Fortunately, as long as the proxy doesn’t have the original server’s private key, then the key fingerprint will be different. Will it? What is the proxy server happens to have a key whose fingerprint hash is the same as the original server's key? SSH very recently upgraded how keys are fingerprinted; the screenshots in this article are the old method, which as I learned recently, are MD5 hashes. (I had thought they…
Re: Why aren’t we using SSH for everything? (2015)
#7> Programmatic Data Streams > RPC API Please don't. Managing SSH sensibly (with checking keys properly) in any greater scale is awful. SSH was never meant for general communication, which reflects how it operates on implementation level and on protocol level. SSH servers require usable home directory locally and remotely (OpenSSH has some workarounds, but this quickly becomes ugly), you need to manage SSH keys, both…
Re: Why aren’t we using SSH for everything? (2015)
#8> Programmatic Data Streams > RPC API Please don't. Managing SSH sensibly (with checking keys properly) in any greater scale is awful. SSH was never meant for general communication, which reflects how it operates on implementation level and on protocol level. SSH servers require usable home directory locally and remotely (OpenSSH has some workarounds, but this quickly becomes ugly), you need to manage SSH keys, both…
As far as the server side - apart from the storage of the keys (which is required with any cryptographic protocol), I'm not sure where the challenge comes in.
Bootstrapping trust is a problem in any situation. SSH server keys paired with an out of band mechanism for distributing public keys or SSHFP can prove to be a fairly reasonable method. I'd say somewhat more reasonable than what we had with HTTP + TLS for the longest time (until say Let's Encrypt). Even with that, certificate stores aren't particularly easy to manage.
Going back to the language-specific implementations of SSH. Those servers can be run without the necessary submodules to do shell-like stuff. I agree with you, it'd be crazy talk to use the system SSH daemon to do much of what's described by the author, but as a protocol, perhaps it is more reasonable.
Re: Why aren’t we using SSH for everything? (2015)
#9Re: Why aren’t we using SSH for everything? (2015)
#10For instance: the HTTPS stack will, with effort, allow you to opt in to protocol forwarding, via mechanisms that were designed to prevent accidental forwarding. The SSH stack, on the other hand, requires you to opt out of arbitrary TCP/IP port forwarding. Screwing that up will, more often than not, get you owned up Phineas Phisher-style.
The things this post appreciates about SSH are equally available in the HTTPS stack (even more so in the HTTP/2 stack). Unlike SSH, with its janky Connection Protocol, HTTP has for the last 10 years been designed as an arbitrary application protocol. SSH does a better job providing interactive terminal sessions. HTTP does a better job at everything else.