rlogin
~ the last words ~
I have typed ssh an uncountable number of times and rlogin exactly never, which is not taste but arrival date. The command was already switched off by default on every machine I ever got an account on, and what survived of it was a manual page describing what used to happen.
What used to happen is this. Berkeley put rlogin into 4.2BSD in August 1983 alongside rsh and rcp, the set everyone called the r-commands, and it did one job: open a terminal session on another machine on the local network. It listened on port 513. It was not documented as a protocol until RFC 1282 appeared in December 1991, eight years after everybody had already standardized on it by using it, and that document opens by admitting it is describing existing practice rather than specifying anything.
It was better than telnet at the one thing it did, in ways you could feel. rlogin carried your terminal type across, and it passed window size changes through to the far end, so resizing your window actually resized what the remote program thought it had. Those were real comforts in 1985 and they are the reason people kept choosing it over the alternative for as long as they did.
~ the record ~
| Born | August 1983, in 4.2BSD out of the CSRG at Berkeley |
|---|---|
| Peak | the default way to reach another Unix host through the late 1980s, on port 513 |
| Killed | 1 July 2017, when FreeBSD made WITHOUT_RCMDS the default |
| Lifespan | 34 years |
| Made by | the Computer Systems Research Group, University of California, Berkeley |
| Killed by | SSH, and a design that took the network's word for who you were |
~ how the login worked ~
There was no password. Your machine sent the name of the local user and the name of the user you wanted to be over there, and the remote machine looked in /etc/hosts.equiv and in the target user's .rhosts file. If your hostname was listed, you were that user. The entire authentication was one host telling another host that it had already checked, and the other host believing it.
~ the trust model ~
That design made sense inside a university department where the machines were in the same building and the network was a cable you could see. It stopped making sense the moment the machines were on the internet, because the only credential involved was a source address, and a source address is a claim. Everything on the wire was in clear text as well, so anyone sitting between the two hosts read the session, including whatever you typed into a program that did ask for a password.
The famous demonstration came on Christmas Day 1994, when Tsutomu Shimomura's machines in San Diego were taken by an attacker who impersonated a host they trusted and predicted the TCP sequence numbers well enough to finish the handshake blind. Nothing was broken in that attack except the assumption. Tatu Ylönen wrote SSH in Finland the following summer after a password sniffing incident on his own university network, and from 1995 onward the r-commands were a thing you were supposed to have turned off already.
~ the removal ~
Turning them off took twenty years, because they were in the base system of every Unix and nobody removes things from a base system in a hurry. OpenBSD went first and went hardest, pulling the r* programs out of -current in May 2002 so that the release that November shipped without them. Everywhere else they were demoted rather than deleted, moved into optional packages that fewer and fewer people installed, with the daemon off by default and a warning added to the top of the manual page.
FreeBSD finished it on 1 July 2017. The UPDATING entry for that date says WITHOUT_RCMDS is now the default and that you can set WITH_RCMDS if you still need them built, and on the same day a port called net/bsdrcmds appeared in the tree holding the whole family, clients and daemons together. The discussion behind that change points at the Stack Clash disclosure twelve days earlier as the push: when a class of bug makes you audit old setuid code, thirty four year old code that nobody should be running anyway is where the audit stops.
~ port 513 ~
Open /etc/services on any machine you have and the line is still there, login on 513/tcp, sitting a row below who and a row above shell. Nothing on that machine will ever send to it. The number stays reserved because the file is a list of what ports mean rather than a list of what is running, which makes it the longest surviving piece of rlogin by a wide margin.
~ leave a rose ~
an anonymous tribute. one rose per visitor per day.
@}-->-- ... roses left here
~ leave a wreath ~
a rose fades by morning. a wreath stays on this grave for good, with your name on it.
from $1, paid once through stripe. it keeps the graveyard running: the hosting and the nightly digging. adopt it and the headstone reads "maintained in memory by" you. the groundskeeper plants new wreaths at the next tending, usually within a day.
» one email a week: new graves and the anniversaries of the dead. subscribe
other protocols: OpenMicroBlogging, .an, MathJax CDN, FeedSync
also died in 2015-2019: Battlefield Heroes, Nook Video, Hellas Online
~ leave a note ~
visitors before you have left these graveside notes. anonymous welcome.