For me it was two places causing motd to be displayed twice:
1) pam.d & 2) sshd itself
To start fixing it:
~> cd /etc/pam.d/
~> grep -i motd *
and then editing /etc/pam.d/sshd (may differ from version to version so confirm with grep output) and hash out these two lines:
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
My /etc/ssh/sshd_config
also had #PrintMotd=yes
(default is yes so it was active even if it was #'d out)
In the end I set /etc/ssh/sshd_config
MOTD option to PrintMotd=no
(not removed the # and set to no to replace the default) and enabled the /etc/pam.d/sshd
motd lines so the /etc/ssh/sshd_config
option printlastlog=yes
will print the last login information after the pam.d motd is displayed.
Pam will also use the options in /etc/update-motd.d/
to customise the /etc/motd
as well which sshd will not do as it will simply display what is already there.