通过 SSH 登录 Ubuntu Server 时,显示以下行:
Last login: Mon Jul 18 20:00:00 2016 from 111.111.111.111
在其他服务器上,111.111.111.111
由主机名替换me.domain.com
,因为我的 rDNS 设置正确。
我该如何配置这个 Ubuntu 16.04 LTS 服务器来执行相同操作?
答案1
打开你的 sshd_config 文件并确保
UseDNS yes
之后,重新启动 ssh 服务器。我在 Centos 7 中尝试此操作,IP 变为主机名。
答案2
PAM 生成该行文本是因为以下配置行/etc/pam.d/login
# Prints the last login info upon succesful login
# (Replaces the `LASTLOG_ENAB' option from login.defs)
session optional pam_lastlog.so
您可以将一些配置选项传递给该 pam 模块,但我没有看到有关解析主机名的任何信息。/var/log/lastlog 是您看到的信息的存储位置,此文件存储 IP 地址,而不是主机名。我认为这从安全角度来看是有道理的。我也检查了一些源代码……我找不到任何有关解析 IP 地址的明显信息(至少在 pam_lastlog.c 中没有)。也许它隐藏在其他地方而我错过了。
此 perl 脚本将用于lastlog
打印当前用户的最后登录信息,并将 IPv4 地址解析为主机名
您可以将其添加到您的/etc/profile
或/etc/bash.bashrc
或下/etc/update-motd.d/
等...以获得相同的效果。它的格式并不完美,因此您可能需要对其进行调整以使其看起来像您想要的那样。
/usr/bin/perl 的 #! 使用警告; 使用套接字; 打开(我的$lastLogOut,“lastlog -u $ENV{LOGNAME} |”); 虽然(我的$entry =){ chomp ( $entry ); 我的$ip地址; 我的$主机名; 如果($entry =〜/(\ d + \ \ d + \ \ d + \ d +)/){ $ip地址 = $&; 如果($hostname = gethostbyaddr(inet_aton($ipAddress),AF_INET)){ $entry =~ s/$ip地址/$主机名/g; } } 打印$entry。"\n"; }
示例输出
$ perl lastlog.dns
Username Port From Latest
ryan pts/5 localhost Mon Jul 18 22:26:28 -0400 2016
如果你想在登录时使用上述脚本,您可能希望阻止 PAM 打印出上次登录信息。附加silent
到 pam_lastlog 行中/etc/pam.d/login
。
session optional pam_lastlog.so silent
答案3
更详细的版本@akhfa 的回答:
在文本编辑器中打开该文件/etc/ssh/sshd_config
,例如nano
或vim
sudo nano /etc/ssh/sshd_config
在文件的底部,你应该可以找到这个(如果你没看到也没关系)
#UseDNS no
#
如果发现这种情况,只需从开头删除该行即可取消注释:
UseDNS yes
UseDNS
如果在文件中找不到,只需添加在文件底部添加新行包含UseDNS yes
(如上)。
保存并关闭文件。
重新启动 OpenSSH 服务。在 Ubuntu 上,您可以使用systemctl
:
sudo systemctl restart ssh
# On some systems, it may be under openssh-server
sudo systemctl restart openssh-server
现在,为了确保您没有被锁定在 SSH 之外,请打开新的、单独的 SSH 连接,然后连接到相关系统。(如果无法连接,则说明您的 SSH 配置被破坏了,请运行systemctl status ssh
- 修复您的配置/在您仍处于有效的 SSH 连接打开状态时搜索如何修复它)
您现在应该看到:
Last login: Mon Jan 1 20:00:00 2020 from 111.111.111.111
如果你重新连接或者打开另一个 SSH 连接,你现在应该可以看到上一个连接中的主机名(假设你连接的 IP 已经反向 DNS)
Last login: Mon Jan 1 20:00:00 2020 from some.host.example.com
此答案已于 2020 年 1 月 21 日在 Ubuntu Server 18.04 (Bionic Beaver) 和 Debian 9 (Stretch) 上进行了测试 - 此答案可能有效,也可能无效,具体取决于您的 Linux 发行版/OpenSSH 版本