21

I have changed /etc/issue.net, so I have set a "personal" message after typing a username in an SSH terminal. Now I am trying to change the welcome text after successful login.

I have found a lot of posts about the /etc/motd file, but the part "Welcome to Ubuntu blabla versionnumber and so on" + "* Documentation URL " is not there?

I just do not want to show OS info in my SSH terminal, I already know what I have installed. :) I only want to see my last login. And also not errors; errors belong in a logfile.

Which file do I have to edit?

29

The welcome messages are generated by the files residing in /etc/update-motd.d/.

From man update-motd:

Executable scripts in /etc/update-motd.d/* are executed by pam_motd(8) as the root user at each login, and this information is concatenated in /var/run/motd.

So if you don't want the outputs of those scripts upon login via ssh just remove the execute flag on them:

sudo chmod -x /etc/update-motd.d/*

Now if you want to show something you want upon login, you have two options:

  • Make a script, put it in /etc/update-motd.d/, make it executable, also make sure it outputs on STDOUT.

  • ssh has a Banner option. You can put the text in a file and set it in the Banner option so that the content of the file is shown upon login via ssh. Note that this is applicable to only ssh.

    Banner /etc/foobar
    

    From man 5 sshd_config:

     Banner  The contents of the specified file are sent to the remote user
             before authentication is allowed.  If the argument is “none” then
             no banner is displayed.  This option is only available for
             protocol version 2.  By default, no banner is displayed.
    
  • 5
    My favorite answers all start with "From man xyz" ;) – A.B. Sep 20 '15 at 18:07
  • Thank you! Now i know the relationship between those files. I did not chmod them, just added # before some lines i do not want to show. – Terradon Sep 20 '15 at 18:47
  • @Terradon Yeah, that would do too..i just generalized the solution because many people won't like to look into the file much.. – heemayl Sep 20 '15 at 18:49
  • 1
    Great clean solution because chmoding the files means I don't have to edit them. Nice! – culix Aug 8 '16 at 4:27
4

You can also nuke pam_motd altogether:

sed -i '/^[^#]*\<pam_motd.so\>/s/^/#/' /etc/pam.d/sshd

PAM calls pam_motd depending on the settings in /etc/pam.d, and typically the entries are:

$ grep pam_motd /etc/pam.d -R
/etc/pam.d/login:session    optional   pam_motd.so  motd=/run/motd.dynamic noupdate
/etc/pam.d/login:session    optional   pam_motd.so
/etc/pam.d/sshd:session    optional     pam_motd.so  motd=/run/motd.dynamic noupdate
/etc/pam.d/sshd:session    optional     pam_motd.so # [1]

Just commenting out the pam_motd lines from these files will disable it.

  • Thanks for your time, but with "Nuke them all" i dont know what i am doing. (I am new to linux/ubuntu). – Terradon Sep 20 '15 at 18:54
  • 1
    @Terradon you're telling PAM not to call pam_motd.so, that's all. – muru Sep 20 '15 at 18:55
  • Thanks, i will take a closer look at what PAM.does exactly. – Terradon Sep 20 '15 at 19:01

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.