使用强制伪终端分配进行 SSH 不会打印我的 MOTD

使用强制伪终端分配进行 SSH 不会打印我的 MOTD

我知道-tssh 中的选项分配伪 tty。我用-t它来在登录时“跳转”到不同的目录,如下所示: ssh -t my-server "cd /path/to/my/directory; bash --login"

为什么如果我登录时没有它(正常情况下)/etc/motd会打印,而有-t它却不会打印?我知道我cat /etc/motd以前可以cd,但我想知道是否有更干净的解决方案,以及为什么会发生这种情况。

ps:正如您所想象的,即使我使用,我也希望在登录时打印 MOTD -t

答案1

MOTD 通常由 显示login,而不是 显示bash,因此如果您不运行,login就不会获得 MOTD。 sshd可能甚至不会使用login,但会根据其几个标志的设置进行打印motd。(正如 Jakuje 所指出的)您通过 sshd 连接的方式不会触发 motd 行为。

我怀疑,试图让事情按你想要的方式运行,将会改变你的配置文件,以便在 sshd 启动 bash 时执行 MOTD。我想你可以检查是否$tty已定义,但可能仍然会有一些游戏阻止你在实际登录时获得两个 MOTD。

这确实看起来是付出了很多努力却收获很少。

或者,如果你喜欢

ssh -t my-server "cd /path/to/my/directory; cat /etc/motd; bash --login"

相关内容