如何查看sshd日志?

gri*_*yvp 158 ssh

我安装了 Ubuntu 9.10 sshd,我可以使用登录名和密码成功连接到它。我已经配置了一个RSA密钥登录,现在正如预期的那样“服务器拒绝了我们的密钥”。好的,现在我想检查sshd日志以找出问题。我检查过/etc/ssh/sshd_config,它有

SyslogFacility AUTH
LogLevel INFO
Run Code Online (Sandbox Code Playgroud)

好的。我正在看/var/log/auth.log……它是空的 O_O。更改LoglevelVERBOSE无济于事 -auth.log仍然是空的。任何提示我如何检查sshd日志?

小智 202

根据以上评论创建答案,归功于@Prof。莫里亚蒂和@地狱之眼

SSH 身份验证失败记录在此处 /var/log/auth.log

以下应该只给你 ssh 相关的日志行

grep 'sshd' /var/log/auth.log

保险起见,获取最后几百行然后搜索(因为如果日志文件太大,整个文件的grep会消耗更多系统资源,更不用说运行时间更长)

查看日志最后 500 行中的 sshd 条目:

tail -n 500 /var/log/auth.log | grep 'sshd'

或者在测试时遵循日志输出:

tail -f -n 500 /var/log/auth.log | grep 'sshd'

  • Ps:如果你的服务器是Red Hat(如CentOS),sshd/login记录日志的路径是/var/log/secure(具体日期的日志文件也可以查看/var/log文件夹)。看到这个答案:https://serverfault.com/questions/465833/where-is-the-sshd-log-file-on-red-hat-linux-stored (17认同)
  • 这个回答。其他带有绿色箭头的答案是假的。改变箭头。 (11认同)
  • `less +F ...` 会实时'tail',而且比tail强大得多 (8认同)
  • 为什么不使用`tail -f ...` 来实时监控呢?这会是较大的日志文件的问题吗? (6认同)
  • 并且 `lnav` 甚至比 less/tail 更好 (5认同)
  • 该问题必须已被编辑,因为它特别指出 auth.log 为空,因此此答案不适用。我来这里是为了寻找 auth.log 的替代位置。谢谢@BrianHellekin。 (3认同)

Cir*_*郝海东 32

如果您可以轻松地再次尝试失败的连接,一种简单的方法是在空闲端口上启动 SSH 服务器,例如2222

/usr/sbin/sshd -d -p 2222
Run Code Online (Sandbox Code Playgroud)

然后重试连接:

ssh -p 2222 user@host
Run Code Online (Sandbox Code Playgroud)

通过使用不同的端口-p 2222,我们不必停止主 SSH 服务器,这可能会将我们锁定。

另见:https : //unix.stackexchange.com/a/55481/32558

  • 最好的选择之一,特别是如果您只能通过 SSH 访问服务器。通过停止 ssh 服务器来调试连接将使您退出会话。只需在不同的端口上启动一个新的 ssh 守护进程并使用该端口测试登录。 (5认同)
  • @AttilaAntal 小更正:停止 sshd 不会终止活动的 ssh 会话。此方法是一个很好的预防措施,以防出现问题,但理论上您可以轻松停止并通过 ssh 重新启动 sshd。 (2认同)

小智 13

如果此时没有其他人在使用该系统,您可以在这种情况下执行我所做的操作:

  • 停止 sshd 服务(至少我在通过 ssh 登录时能够做到这一点)
  • 手动启动 sshd 并添加一些 -d 选项以获得更详细的调试输出。除非你有一些时髦的事情发生,否则它应该使用相同的键和配置它在正确启动时所做的

  • 在远程服务器上停止 SSHD 是一个非常糟糕的主意。大多数情况下,这可能会解决某些(或大多数)设置的问题,但如果出现任何问题 - 您的连接、两端的电源、健忘等 - 您将被锁定在盒子外面。这是个坏消息。 (171认同)
  • 这如何回答问题?我通过网络搜索来到这里,希望学习如何检查 SSHD 日志文件,而不是什么对你有用……我希望 Stack Exchange 网络上的读者能够真正阅读并回答手头的问题,而不是他们想要的问题是...... (42认同)
  • 您可以在另一个端口上启动另一个 sshd。连接到那个。然后停止主 sshd 并在端口 22 上启动一个新的 sshd。如果出现任何故障,请使用您的 DRAC 或云管理重新启动该设备。您应该在启动时启动 sshd 吗?不用担心。 (4认同)
  • @JoelESalas 社区不会决定接受哪些答案。 (2认同)

Red*_*yed 11

查看日志的现代方式

  1. 所有关于sshd:
    journalctl -t sshd

    journalctl -u sshwhere 的消息-u == unit

  2. 关于sshd上次启动的消息:
    journalctl -t sshd -b0

  3. sshd上次启动后的消息以相反的顺序:
    journalctl -t sshd -b0 -r

  • 是的 !!!还有journalctl -u ssh,其中u =单位。使用此语法,您可以用于任何 systemd 单元 (2认同)

小智 9

如果您想查看有关 sshd 的所有日志消息,请运行以下命令:

grep -rsh sshd /var/log |sort
Run Code Online (Sandbox Code Playgroud)

  • 日志将以诸如“Mar 14 19:52:04”之类的条目开头,这些条目排除了年份,并且不容易排序(尽管假设您没有超出年份之间的界限,您可能会幸运地使用“sort --month-sort”) )。日志文件本身已经排序,因此您只需按正确的顺序扫描它们即可。此外,在具有大量日志的系统上,递归“grep -r”调用将非常慢。没有理由额外扫描 HTTPD 日志之类的内容。 (2认同)

小智 5

您可以使用以下命令查看 SSH 的日志:

tail -f /var/log/auth.log
Run Code Online (Sandbox Code Playgroud)