题 你如何明确表示你在生产系统上?


我公司的一些人在生产服务器上具有root访问权限。我们正在寻找一种很好的方法来实现它 非常 当我们进入ssh时,我们会清楚

我们的一些想法是:

  • 明亮的红色提示
  • 在获得shell之前回答一个谜语
  • 在获取shell之前键入一个随机单词

你们用什么技术来区分生产系统?


132
2017-10-19 18:21




有没有办法教人们避免ssh到生产系统?例如,如果您将所有内容都签入Puppet,则只需登录生产系统进行故障排除。 - Alex Holst
您允许在生产系统上进行root ssh访问???? !!!!! - symcbean
@symcbean:这不是Sionide所说的。在您使用SSH进入用户帐户后,他本来就是这么想的。 - Zan Lynx
这个问题是否成为社区维基的候选人? - MadHatter
您可以通过禁用SSH来非常清楚它是一个生产系统。它不能比那更清楚。 - Franci Penov


答案:


红色提示是一个好主意,我也使用。

另一个技巧是在中添加一个大的ASCII艺术警告 /etc/motd 文件。
登录时遇到这样的问题应该引起你的注意:

 _______ _ _ _____ _____ _____ _____
| __ __ | | | | _ _ | / ____ | | _ _ | / ____ | / \
   | | | | __ | | | | | (___ | | |(___ / \
   | | | __ | | | \ ___ \ | | \ ___ \ / / \ \
   | | | | | | _ | | _ ____)| _ | | _ ____)| / ____ \
   | _ | | _ | | _ | _____ | _____ / | _____ | _____ / / _ / \ _ \


 _____ _____ ____ _____ _ _ _____ _______ _____ ____ _ _
| __ \ | __ \ / __ \ | __ \ | | | | / ____ | __ __ | _ _ / __ \ | \ | |
| | __)| | __)| | | | | | | | | | | | | | || | | | \ | |
| ___ / | _ / | | | | | | | | | | | | | | || | | | 。 `|
| | | | \ \ | | __ | | | __ | | | __ | | | ____ | | _ | || | __ | | | \ |
| _ | | _ | \ _ \\ ____ / | _____ / \ ____ / \ _____ | | _ | | _____ \ ____ / | _ | \ _ |


 __ __ _____ _ _ _____ _ _ ______
| \ / | / \ / ____ | | | | _ _ | \ | | ____ |
| \ / | / \ | | | | __ | | | | | \ | | | __
| | \ / | | / / \ \ | | | __ | | | | 。 `| __ |
| | | | / ____ \ | ____ | | | | _ | | _ | | \ | | ____
| _ | | _ / _ / \ _ _ _____ | _ | | _ | _____ | _ | \ _ | ______ |

你可以生成这样的警告 这个网站 或者你可以使用 figlet  命令。

figlet

就像尼古拉斯·史密斯在评论中所建议的那样,你可以用一些龙或其他动物来调味 cowsay 命令。

dragon cowsay

您也可以调用,而不是使用/ etc / motd文件 cowsay 要么 figlet 在里面 .profile 文件。


135
2017-10-19 18:36



哦,我喜欢! - Sionide21
如果你输入一些命令,你将不会再看到它。 - Nils
没错,这就是红色提示派上用场的地方。 - Kenny Rasschaert
在Windows服务器上,我使用明亮的粉红色桌面颜色和亮黄色标题栏/配色方案,这样它真的非常非常明显。这是我们的彩色命令提示符版本 - Mark Henderson♦
我想补充一下 ASCII龙 进入组合。 - Nicholas Smith


不太一样,但是 这个网站 建议让您的开发人员在更改生产系统时佩戴粉红色的宽边帽。你可能有一个类似的规则来sshing到他们。

developer wearing a pink sombrero


75
2017-10-20 04:58



哈哈! +1因为我LOL'd。但是说真的,人们可以在戴着它们的同时寻找丢失的眼镜,我怀疑帽子是否会成为“不断提醒”。此外,它没有帮助您记住哪个窗口是哪个。 - Felix Dombek
是的,你必须改变你的过程:1)宣布编辑制作的愿望。 2)拿出阔边帽,关闭所有其他窗户。 3)每个人都在看的时候做生产的东西。 4)退出会话并删除sombrero。 - Aric TenEyck
“2)拿出宽边帽并关闭所有其他窗户”这对我公司来说真的不起作用,因为这是我们所有SOP的第2步。第1步当然是“打开灯”,因为在窗户关闭的情况下,这个办公室会变暗。 - Parthian Shot


我使用的最大的是一个离散的命名方案,其中prod系统的命名明显不同于test / dev实例。这使得“Username @ Hostname:”样式提示明显不同。显而易见,我的意思不仅仅是不同的词,不同的格式:

示例:PRD-WEB001 vs DEVEL-BOB-WEB001

这有几件事情要做:

  • 额外的超级块使它成为三个集合而不是一组二。
  • 第一组是不同的长度。
  • 名称的总长度明显不同,这使得命令行间距相对于彼此和窗口中的其他文本不同。

最重要的是,它不需要特殊的终端配置进行生产,只是为了避免Oops错误。

根据我的经验,你想要的东西不断提醒你的位置。像谜语这样的登录方法大约10秒钟,直到你忘记哪个窗口是哪个。所需要的只是做一个 ls 在错误的目录中滚动不祥的登录横幅视图,在浏览器窗口下隐藏终端窗口,同时谷歌搜索一些东西,alt-tab回到错误的窗口,然后发生混乱。最好有一些持续的视觉提示,就像一个明显不同的命令提示符。


50
2017-10-19 18:33



这对于基本系统来说非常有效,但是一旦你将dev- *改为prod- *,开发人员会呻吟和呻吟,因为他们的一半链接停止工作(无论你以前做了多少次),有时候系统本身一直在半工作,直到您修复配置文件中的旧名称的所有众多引用。特别是在安装了专有软件的情况下,DNS别名只能提供帮助。更糟糕的是,在切换窗口时很容易忘记提示。 - SilverbackNet
开发人员需要创建适用于dev / test / staging / production的设置(这就是我所做的,但这是另一个故事)。对于bash的工作“红色提示”(比看起来更难),请参阅我的答案 serverfault.com/a/479718/79266 - RichVel


您需要记住的一件事是,这需要一个持久的提醒,而不仅仅是登录时的指示。通常,有人会在不同的选项卡中同时运行多个shell并在它们之间移动。一些将是开发,一些生产。因此,当您运行命令时,您需要在该点有一个指示器。因此,根据我的经验,有一个特殊提示是最好的方法,修改后的标题/标签栏可以很容易地找到合适的窗口/标签。

所以我建议有一个彩色提示符(红色是显而易见的选择)和主机名的所有大写字母,用户的行为类似(特权与非特权)作为提示。一些例子:

colored prompts example

通常是这样的

set prompt =  "%{\033[1;44m%}`whoami`@`hostname -s`#%{\033[0m%} "` 

在你的shell启动文件中。这个是蓝色的。更换 44 同 41 冷杉红色 42 为了绿色。 其他颜色和野生图案也可用


38
2017-10-19 21:26



对于bash的工作“红色提示”(比看起来更难),请参阅我的答案 serverfault.com/a/479718/79266  - 还显示git分支,截断当前目录等。 - RichVel


这些是我的建议:

1)确保生产环境中的大多数命令(rm,chown,chmod,/ etc / init.d / *)都需要sudo访问权限

2)使用PS1 / PS2指示用户在Prod服务器中

bash-3.2$  export PS1="[\u@\h \W]\$ "

这将显示命令提示符

[sridhar@prodappserver901 conf]$

3)如果使用Putty / SSH客户端,您始终可以设置唯一的背景颜色/配置文件,以使生产服务器脱颖而出。


14
2017-10-19 18:50



#1是一个有趣的想法,但不切实际,因为作为守护进程用户运行的脚本可能需要使用rm,chmod等。 - Zan Lynx


只需考虑您的第二个和第三个想法在初始连接期间有所帮助,但是当您打开多个终端并从一个终端移动到另一个终端时没有任何价值。 sysadmin1138使用命名的想法很好,当它可以应用时,但有很多情况下它不能。

我发现唯一真正有价值的是彩色提示。我喜欢绿色用于开发/测试,红色用于生产,蓝色用于DMZ中的机器。这样,即使我有两台具有相同名称的机器(在不同的网络中),例如在准备替换机器时,我仍然可以很容易地分辨出我正在使用哪台机器。


13
2017-10-19 21:16





红色/特殊命令提示符很好。另一件事可能是使用TMOUT变量在这些机器上更快地自动注销。如果您打开了许多窗口,那么生产窗口将会更快地消失。

这应该导致不同的行为:

  1. 开发
  2. 测试
  3. 对登台服务器进行更改
  4. 然后快速进入生产并在那里部署(就像你在登台服务器上做的那样)

11
2017-10-19 19:06





使用普通root帐户在生产计算机上工作从来都不是一个好主意。

拥有完全sudo权限的帐户。不允许保存sudo会话。禁止sudo su。为它使用单独的密码(不是您的开发机器的密码)。在执行命令(通过别名)之前,可能会调整sudo以通知shell的生产标识。

它会使偶然的错误变得非常困难。红色提示永远不会伤害。


8
2017-10-20 02:44



而“sudo su”你的意思是“sudo -i”或者至少是“sudo su - ”,对吧? - Sparr
哇!这是Sparr!小世界 :) - Sionide21
阻止人们拥有root shell是不可能的。 (sudo bash)。您可以从任何“黑名单”设置中获取root shell。 (如果您小心,可以使用白名单设置来停止它,但通常无法保证。) - user606723
它不应该阻止对root shell的预期访问 - 只有人们如此习惯的一些常见方式,以便他们可以潜意识地做到这一点,而无需关注。 - Mihails Strasuns


我带着红色的提示想法,发现找到工作代码相当繁琐 .bashrc

所以这是我的版本,准备加入 .bashrc  - https://github.com/RichVel/nicer-bash-prompt。它完全由主机名驱动,所以只要你有一个合适的生产主机名模式(比如说 xyprod01xyprod02等等)它会很好用,你可以使用相同的 .bashrc 在所有环境中。

它看起来像这样:

screenshot of red prompt

这会创建一个更好的bash提示,包括生产主机上的红色提示 - 还显示当前的git分支,以及$ PWD中的最后2个目录。在bash中执行Ctrl / R(反向搜索)时,请注意避免弄乱提示显示。

还包括一个可选功能,可以在所有终端窗口中同步您的bash历史记录 这个答案。这很不错,但不是每个人都想要它,所以它默认是禁用的。


8
2018-02-17 17:33



这是最好的!!谢谢!!! - Luciano