For a while I have been troubleshooting why SSH logins into my Ubuntu server running 14.04 LTS are seemingly slow. I enabled SSH debugs (LogLevel set to DEBUG in /etc/ssh/{sshd_config,ssh_config}) on both the client and the server and did not find anything that pointed to an issue with the SSH negotiation/login itself. Recently I discovered that the 10-second delay in logging in had to do with SSH logins causing a hard disk that I keep spun down to be spun up. That takes about 10 seconds, which explains the delay.
Turns out that by default, console and SSH logins cause the scripts in /etc/update-motd.d/ to be executed. The script /etc/update-motd.d/98-fsck-at-reboot in particular is what causes disks to be spun up.
The scripts in /etc/update-motd-d/ are responsible for generating the file /run/motd.dynamic, which looks like this:
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-37-generic x86_64) * Documentation: https://help.ubuntu.com/ System information as of Thu Oct 9 10:05:21 EDT 2014 System load: 0.37 Processes: 164 Usage of /: 18.1% of 915.51GB Users logged in: 1 Memory usage: 55% IP address for eth0: 10.10.13.10 Swap usage: 12% Graph this data and manage this system at: https://landscape.canonical.com/
That is pretty and provides some good information but for me I rather have a shell prompt immediately after I hit the <Enter> key after typing “ssh <my server>”. I then can manually execute some useful commands like “w” to see who is logged in, the uptime, etc.
I have disabled execution of the /etc/update-motd.d/ scripts by tweaking the files /etc/pam.d/{login,sshd} in the following way:
# Prints the message of the day upon succesful login. # (Replaces the `MOTD_FILE' option in login.defs) # This includes a dynamically generated part from /run/motd.dynamic # and a static (admin-editable) part from /etc/motd. #session optional pam_motd.so motd=/run/motd.dynamic noupdate #session optional pam_motd.so # Disable display of /run/motd.dynamic and add "noupdate" so # scripts in /etc/update-motd.d/* are not called. # peloy@chapus.net # 20141009 session optional pam_motd.so noupdate
The first two commented out “session” lines are what were there by default. I commented them out and then added a new “session” line that has the “noupdate” keyword, which is actually what causes the pam_motd.so module to not execute the scripts in /etc/update-motd.d/. This uncommented “session” line is what will display the standard /etc/motd file (if it exists).
Now a SSH login is fast, does not provide a lot of information upon log in (which I like), and, most important, spun down disks are not spun up upon log in:
$ ssh altamira You have new mail. Last login: Thu Oct 9 10:23:44 2014 from 2003:450:e6a5:100:a412:6z7a:897d:1387 altamira$ # That was a very fast login!
The following askubuntu.com question is what pointed me in the right direction:
http://askubuntu.com/questions/282245/ssh-login-wakes-spun-down-storage-drives
This is an issue that seems to have been introduced when I upgraded this server from Ubuntu 12.04 LTS to 14.04LTS. In particular, my Ubuntu 12.04LTS installation did not have the file /etc/update-motd.d/98-fsck-at-reboot.