Date: 2025-02-28
Do many things and do them wrong
--------------------------------
Recently I replaced an old pile of garbage OpenSSH with Dropbear.
Luckily in Alpine Linux even small packages are divided into smaller
parts if they are modular. Both OpenSSH and Dropbear packages are
there divided into more parts, like server, client, keygen and so on.
I setup Dropbear to be called from inetd, which puprose is just one
thing - listen for network connection and launch program. Well made.
That's rare. In my case, inetd is part of busybox-extra package.
While OpenSSH can be also called from inetd and the package is also
divided into more pieces, it is still pretty huge compared to
Dropbear. Its job should be to do one thing. In most cases, that one
thing is the only one used by users anyway. It is to connect and stay
connected to some machine. But one can see all those thousands options
for the client, then extra thousands for the server, like in xterm
manual page. Reading for the whole night.
Now imagine pretty standard setup, local machine. Connection is
encrypted for no reason. Another standard environment is that
connection has high latency. In that case, working in ssh is just
pain or not possible at all.
OpenSSH includes also scp - secure copy protocol. What's that?
Get file from remote to local machine:
ssh host 'cat /path/remotefile' > /path/localfile
Put file from local to remote machine
cat localfile | ssh host 'cat > /path/remotefile'
No way in OpenSSH scp. Look at this poetry:
scp [-346ABCOpqRrsTv] [-c cipher] [-D sftp_server_path]
[-F ssh_config] [-i identity_file] [-J destination] [-l limit]
[-o ssh_option] [-P port] [-S program] [-X sftp_option] source target
3 lovely lines of options to copy a file from one machine to other.
Why then so many options of nonsense? Who even remember how to
correctly type scp command? It's like tar command. Many, including me,
have no idea what gibberish to type. Tar is a good example of
horseshit. Most frequent usage would be probably to archive some
directory or bunch of files and extract them. Look at this pile of
manure:
tar {-crtux} [-014578eHhjLmNOoPpqvwXZz] [-b blocking-factor]
[-C directory] [-F format] [-f archive] [-I file] [-s replstr] [file]
This novel can't fit even in one line. In old time of small screens
and terminals, one could probably easily forget if he was trying to
use ssh or tar during his keystrokes ;/
Who has forgotten the UNIX philosphy here? Output from one, input for
other one? Why so many options and features in one program which
should be very simple? It feels more like somebody covering and
mitigating bad design with extra senseless features.
Today's solution is to rewrite this junk in Rust, Go or any other
language some corporation advertises as a new cool thing. It fixes
nothing. From one junkyard, we end up with two rubbish heaps with
different taste.
----------------------------------------------------------------------
Nature does not hurry, yet everything is accomplished.