Why aren't we using SSH for everything? (2015)
SSH, known for secure server access, can extend to chat rooms, APIs, and file serving. Despite lacking HTTP/2 features, its encryption and authentication benefits raise questions on underutilization.
Read original articleThe article discusses the potential of using SSH (Secure Shell) for various applications beyond its traditional use for remote server access. It highlights SSH's features such as authentication through key pairs, encryption of connections, support for multiplexing, and its ubiquity across platforms. The author explores the idea of leveraging SSH for activities like chat rooms, APIs, file serving, and even building a version of HTTP on top of SSH. While SSH lacks some features present in HTTP/2, such as virtual hosts, it offers advantages like built-in client authentication, eliminating the need for additional passwords. The article concludes by posing the question of why SSH is not more widely used for a broader range of applications, given its robust security features and versatility.
Related
SSH as a Sudo Replacement
Using SSH instead of sudo, the article addresses limitations of setuid binaries for privilege escalation. It details configuring s6-sudod to allow authorized users root access securely, emphasizing OpenSSH's security features.
Remote shell to a Raspberry Pi at 39,000 ft
The author shares their positive experience beta testing remote shell on Raspberry Pi Connect during a flight, praising its stability and efficiency for text commands. They highlight its advantages over VNC in low-bandwidth situations.
OpenSSH Race condition resulting in potential remote code execution
OpenSSH 9.8, released on July 1, 2024, addresses critical security issues like ObscureKeystrokeTiming vulnerabilities in sshd(8) and ssh(1), plans to deprecate DSA support, and introduces penalties for failed authentications. Various improvements included.
Protecting sshd using spiped (2012)
The article highlights spiped as a secure pipe daemon to protect sshd, offering a simpler alternative to 'ssh -L' by establishing a pre-shared secret key between hosts. Spiped enhances server security efficiently.
SSH has become our universal (Unix) external access protocol
SSH is widely used at a university for remote access. Organizations prefer a single VPN for security in low external access environments. WireGuard is suggested for personal use due to its security advantages over SSH.
This, known as fingerprinting, is collectively considered a bad thing. I am thankful this isn't elsewhere
SSH has become our universal (Unix) external access protocol
> SSH knows your username
It is not always desirable, although of course an implementation might not necessarily need to use your local username as the remote username (especially if the implementation is on a computer that does not have usernames). The existing implementation does allow you to override the usernames, as they describe there.
Sending environment variables is also useful. You might not want to send some (or you might, like above, use a computer system that does not have environment variables, in which case the SSH client will need to have its own mechanism to specify them).
Sending these things automatically even if you do not want to do, can be a problem.
> SSH validates against your key pair
This is a helpful method, although the user may wish to force a specific method (and the server also might wish to do so).
Automatically offering all of the keys doesn't seem like very good to me, but allowing the user to manually associate which keys to use for which connections (allowing keys to be shared between connections if wanted), can be helpful. (This is not a problem with the SSH protocol, though; it is an issue with the client implementation.)
> SSH connections are encrypted
Encryption is helpful, but sometimes unencrypted connections are helpful (e.g. in case it is to another program on the same computer and encryption is not needed). If the client requests encryption and the server does not have it (or does, but with a weaker cipher than the client intends), then the client should display an error message and refuse to connect.
Key fingerprint validation is very helpful. This is not really specific to the SSH protocol though, and is possible with other protocols such as TLS, although the SSH client has a better user interface and user experience for this than some other programs (such as most web browsers).
(TLS has many complexity too though; most kinds of encryption will have many, although there are some experimental ideas for a somewhat simpler kind.)
> SSH supports multiplexing
Multiplexing in the protocol really is a useful feature for many purposes (although not everything should need it). Some examples are mentioned there, although others can be possible too.
> SSH is ubiquitous
It is true, and this is a good thing; but nevertheless there are some issues with this. There is still some complexity, even though it is fortunately not even half as complicated as modern WWW (although it also has a few complexities that WWW lacks).
There are also some issues having to do with different types of computers and user preferences. (WWW has these problems too and is even worse in many ways.) Environment variables can solve some of these things, but not all of them. (Some things can be solved without the server needing to know about them; e.g. you could easily program the terminal emulator to ignore the colours specified by the server, e.g. in case the server ignores the client's NO_COLOR variable.)
> SSH sounds awesome, and familiar… Binary protocol, mandatory encryption, key pinning, multiplexing, compression (yes, it does that too).
I think there are some benefits of binary protocols especially if it makes it simpler to parse than text protocols; however, text has different benefits.
TLS also supports compression, even though it is not always used (and there are aparently security issues with it that have to do with HTTP, is what I seem to remember), and also seems to be deprecated.
Multiplexing also would be possible with other kinds of protocols that are designed to support it.
Key pinning also can be done independently of the protocol; the SSH client does that, and it is helpful, but it isn't something that necessarily needs the SSH protocol in order to work.
They also mention that virtual hosting is not supported, so this is another problem with SSH. (TLS does have virtual hosting.)
> Why aren’t we using SSH for everything?
Well, I think although it has many benefits, there are also many problems with it (e.g. SSH does not have virtual hosting). However, both many of these benefits and many of these problems are mostly independent of the protocol.
Also, different protocols and different file formats are useful for different purposes, rather than needing only one kind. There are many kinds.
In my opinion, the user interface for SSH tends to be better designed in some ways, than the user interface of web browsers; however, this is not really an issue with either protocols themself.
Related
SSH as a Sudo Replacement
Using SSH instead of sudo, the article addresses limitations of setuid binaries for privilege escalation. It details configuring s6-sudod to allow authorized users root access securely, emphasizing OpenSSH's security features.
Remote shell to a Raspberry Pi at 39,000 ft
The author shares their positive experience beta testing remote shell on Raspberry Pi Connect during a flight, praising its stability and efficiency for text commands. They highlight its advantages over VNC in low-bandwidth situations.
OpenSSH Race condition resulting in potential remote code execution
OpenSSH 9.8, released on July 1, 2024, addresses critical security issues like ObscureKeystrokeTiming vulnerabilities in sshd(8) and ssh(1), plans to deprecate DSA support, and introduces penalties for failed authentications. Various improvements included.
Protecting sshd using spiped (2012)
The article highlights spiped as a secure pipe daemon to protect sshd, offering a simpler alternative to 'ssh -L' by establishing a pre-shared secret key between hosts. Spiped enhances server security efficiently.
SSH has become our universal (Unix) external access protocol
SSH is widely used at a university for remote access. Organizations prefer a single VPN for security in low external access environments. WireGuard is suggested for personal use due to its security advantages over SSH.