修改 Ubuntu SSH 登录后的欢迎信息

 

由于工作需要,在原有跳板机的基础上又再次架设了一台基于 Ubuntu 的跳板机。

  一开始安装的是 CentOS,本想着这个系统比较稳定,结果安装完连 Telnet 客户端都没本事搞得定,最后一试自己已经装了正在运行的 Ubuntu,默认就自带这个功能,于是乎就毫不犹豫的更换了 Ubuntu Server。

  要当跳板,固然得开启远程登录的功能,而 Linux 无外乎就是 Telnet 和 SSH 两种方式,前者比较古老了,而且不支持加密传输,故 SSH 是首选,也是我常用的方式。

  但是开启了 SSH 登录后,会看到提示一些欢迎信息,里面包含了系统版本和资源信息等,由于登录这个跳板的有可能有外人,所以为了保证安全,就想到了去掉这些登录信息,或者是修改成自己喜欢的不会泄漏信息的界面。

  搜索了大半天,也在 Ubuntu 论坛发帖咨询,还是无果。不过还好,不断更换关键词,最终找到了需要的答案。

一、Ubuntu

  Ubuntu的登陆和欢迎信息控制/etc/issue和/etc/motd。/etc/issue与/etc/motd区别在于:当一个网络用户或通过串口登录系统 上时,/etc/issue的文件内容显示在login提示符之前,而/etc/motd内容显示在用户成功登录系统之后。

  修改登陆前显示信息:

#vi /etc/issue
#vi /etc/issue.net
Custom 10.04.2 LTS \n \l

  issue 内各代码意义:

\d 本地端时间日期;

\l 显示第几个终端机接口;
\m 显示硬件等级 (i386/i486/i586/i686...);

\n 显示主机网络名称;

\o 显示 domain name;

\r 操作系统版本 (相当于 uname -r)

\t 显示本地端时间;

\s 操作系统名称;

\v 操作系统版本。

  可以通过修改/etc/issue内容制作自己喜欢的登陆信息。这里还要注意的是,除了 /etc/issue 外还有个 /etc/issue.net。这个是提供给 telnet 这个进程登录程序用的。当我们使用 telnet 连接主机时,主机的登入画面就会显示 /etc/issue.net 而不是 /etc/issue。

  登陆后显示信息:

#vi /var/run/motd
Welcome to Ubuntu!

  这里显示很多系统信息,都是怎么得来和更新的呢?

  Ubuntu 与别的 Linux 不同,直接修改 /etc/motd 文件重登录后无效。因为这里 /etc/motd 是一个符号链接,指向 /var/run/motd,应该是一个启动后在生成的文件。

  在版本 10.04 中,找到生成的脚本在目录 /etc/update-motd.d/ 中,那几个有序号的文件就是,包括 00-header,20-cpu-checker ,90-updates-available, 98-reboot-required,10-help-text,50-landscape-sysinfo,91-release- upgrade,99-footer。修改这几个文件,可以得到自己想要的结果。

  我使用的是 Ubuntu 12.04 Server LTS,目录下有这几个文件:

00-header
10-help-text
50-landscape-sysinfo
90-updates-available
91-release-upgrade
98-fsck-at-reboot
98-reboot-required
99-footer

  基于我的需求,我修改到了一下几个文件:

00-header
50-landscape-sysinfo
90-updates-available

  例如显示系统相关信息:

System load: 0.0 Processes: 75
Usage of /: 2.7% of 73.47GB Users logged in: 2
Memory usage: 48% IP address for eth0: 61.166.76.27
Swap usage: 0%

  此信息就是文件 “50-landscape-sysinfo” 里面的如下语句控制的:

/usr/bin/landscape-sysinfo

  在前面用 “#” 号将其注释,保存即可。

  修改后用:sudo run-parts /etc/update-motd.d 去执行就会立即见到效果,而不用反复注销登录。

二、Debian

  必需改 /etc/motd.tail,否则重启 /etc/motd 就复原了。