欢迎横幅停止 scp

欢迎横幅停止 scp

我们的团队决定为所有房东添加欢迎横幅。团队成员没有添加消息 in,而是/etc/motd添加了消息echoin ~/.cshrc

这正在破坏scp主机之间的关系。有人可以解释这是如何打破的吗scpcshrc即使你这样做时也已加载scp?其中的一些回显消息将如何破坏它?

我不知道内部运作scp

我们添加的消息~/.cshrc

echo "##############################################################################"
echo "                              Alert! Aler! Alert! Alert! Alert! Alert!"
echo "This is a restricted box, any actions performed here will be reported to [email protected]"
echo "##############################################################################"

答案1

在传输之上运行的命令ssh在启动服务器之前不会期望大量输出。这将影响许多公用事业。

解决方案是让您的管理团队仅在以下情况下打印消息:标准输出已连接至终端。

if ( $?prompt ) then
    echo "Secure machine message..."
    echo "More warnings"
    echo "Etc."
endif

更好的是,您根本不会将其放入.cshrc,而是将消息内容本身放入 中/etc/issue.net,并显示登录。不过,这可能需要启用/etc/ssh/sshd_config,使用如下行:

Banner /etc/issue.net

答案2

您无法在非交互式会话中打印任何内容。这会破坏任何使用严格协议(例如 SFTP 或 SCP)的客户端。


使用/etc/motd(仅用于交互式会话)。

或者使用sshd_config指令Banner

TERM或者在打印任何内容之前测试交互式会话(例如,通过测试或变量的存在prompt)。


有关背景信息,请参阅我对服务器故障问题的回答每个用户的 SSH MOTD

答案3

我相信您必须将这些行放在 .cshrc 文件中的任何内容之上,因为否则,它将不允许您执行 sftp 或 ftp 或其他任何操作,因为它是一个交互式 shell:

这些错误通常是由 shell 运行控制文件(.cshrc、.profile、.bashrc 等)中向终端生成输出的命令引起的。此输出会干扰 SSH 守护程序和 sftp 服务器子系统之间的通信。此类命令的示例可能是 date 或 echo。如果您使用 mail 命令检查邮件,也可能会导致错误。要解决此问题,您应该将任何将产生输出的命令放在条件语句中,该条件语句仅在 shell 是交互式的情况下才执行。 (所有修复都需要位于相关 shell 的控制文件的顶部。

布莱恩·贝克

答案4

在里面~/.cshrc。我相信这会让修复变得容易。更改代码~/.cshrc以读取

echo 1>&2 "##############################################################################"
echo 1>&2  "                              Alert! Aler! Alert! Alert! Alert! Alert!"
echo 1>&2  "This is a restricted box, any actions performed here will be reported to [email protected]"
echo 1>&2  "##############################################################################"

相关内容