I want to run script upon initial login over SSH that displays some helpful information to the user logging in. However, I don't want this script to run on every login. That is, if the user starts screen after logging in the custom "motd" shouldn't be run again (nor if subsequent screens are created). Of particular note, the script will need the user's final ENV to work correctly. Is this possible? If so, how do I go about doing it?


PrintMotd directive is not allowed within a Match block. If all you want is display some helpful info for a specific user when he login, Banner directive can do this:

Match User <special_user>
    Banner /etc/ssh/banner.txt
| improve this answer | |
  • 1
    He mentioned using the user's env in a script to print this info, does banner support that? I didn't think it did. – polynomial Sep 13 '11 at 6:26
  • Indeed. I want to execute a script, not dump a text file to the screen. – James Sumners Sep 13 '11 at 12:47

As outlined in this ALE thread, it is possible to use the user's ${HOME}/.ssh/rc file for this purpose. The manpage, in the SSHRC section, explicitly states that you should not write to stdout via this rc file, but the following script will work:

if [ ! -t 1 ]; then
    # This is scp, sftp, a port forward, or something else

# Use stderr like the manpage tells you to do
exec 1>&2

echo -e "This is output to stdout via the ${HOME}/.ssh/rc file.\n"
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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