You don't exist, go away!
After opening my laptop today, the first thing was of course to login to various systems, as I usually do. But this time I couldn't and instead was greeted with:
$ ssh foobar You don't exist, go away!At first I thought the remote system was at fault, but
ssh
would print the same message for every other system I was trying to login to. This had been reported by others already and after just clicking those links I tried again and this time ssh
was able to login w/o a problem. So, while this was only a temporary issue, let's recap and dig into that once again.Apparently, the error message is generated by the client:
$ strings `which ssh` | grep away You don't exist, go away!It's right there in ssh.c:
pw = getpwuid(original_real_uid); if (!pw) { logit("You don't exist, go away!"); exit(255); }So, the call to getpwuid() failed. Now, why would it do that? In the manpage it says:
These functions obtain information from DirectoryService(8), including records in /etc/passwdAnd
/etc/passwd
was there all the time (hah!), so maybe DirectoryService(8) screwed up? Let's see if we find something in /var/log/system.log
:
14:59:57 coreservicesd[54]: _scserver_ServerCheckin: client uid validation failure; getpwuid(502) == NULL 14:59:58 loginwindow[376]: resume called when there was already a timer 14:59:58 coreservicesd[54]: _scserver_ServerCheckin: client uid validation failure; getpwuid(502) == NULLThere it is. Now, restarting
coreservicesd
(or securityd
) would have helped, but by now the system was fully waken up from sleep and getpwuid()
was able to do what it does - and ssh
was working again, too. If it happens again and won't recover by itself - we know what to do :-)