我公司中的一些人对生产服务器具有root访问权限。我们正在寻找一种很好的方法,使它在切入时变得非常清晰。

我们有一些想法:


亮红色提示
在获得外壳之前先回答一个谜题
在获得外壳之前先键入一个随机单词

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

/>

评论

有没有什么方法可以教人们避免使用生产系统?例如,如果您已将所有内容都签入Puppet,则只需登录生产系统以进行故障排除。

您是否允许在生产系统上进行root ssh访问???? !!!!!

@symcbean:那不是Sionide所说的。在您SSH到您的用户帐户后,他本可以表示。

这个问题会成为社区Wiki的候选人吗?

您可以通过禁用SSH使其非常清楚,它是生产系统。没有比这更清楚的了。

#1 楼

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

另一个技巧是在/etc/motd文件中放置一个大型的ASCII艺术警告。
登录时会有类似的问候请注意:

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


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


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


您可以在此网站上生成此类警告,也可以使用figlet
命令。



像尼古拉斯·史密斯在评论中建议的那样,您可以使用cowsay命令为一些龙或其他动物加香料。



除了使用/ etc / motd文件,您还可以在cowsay文件中调用figlet.profile

评论


哦,我喜欢!

– Sionide21
2011年10月19日在18:46

如果您键入某些命令,您将不再看到该命令。

–指甲
11-10-19在19:02

没错,这就是红色提示派上用场的地方。

–肯尼·拉沙特(Kenny Rasschaert)
2011年10月19日在19:03

在Windows服务器上,我使用了明亮的粉红色桌面颜色和明亮的黄色标题栏/配色方案,因此它确实非常明显。这是我们的彩色命令提示符版本

–马克·亨德森(Mark Henderson)
2011-10-19 21:26

我想添加ASCII龙。

–尼古拉斯·史密斯
2011年10月20日15:15

#2 楼

不太一样,但是此网站建议您在更改生产系统时让开发人员戴上粉红色的草帽。您可能会有类似的规则将它们插入。



评论


哈哈! +1是因为我笑了。但是,严重的是,人们在戴眼镜时会寻找失踪的眼镜,我怀疑帽子会起到“不断提醒”的作用。同样,它也无助于您记住哪个窗口。

– Felix Dombek
2011-10-20 9:38



是的,您必须将流程更改为:1)声明编辑作品的愿望。 2)取出草帽并关闭所有其他窗户。 3)在大家观看的同时做生产工作。 4)注销会话并删除草帽。

– Aric TenEyck
2011-10-20 14:36



“ 2)放宽草帽并关闭所有其他窗口”这对我的公司而言实际上是行不通的,因为这是我们所有SOP的第2步。步骤1当然是“开灯”,因为在关闭窗户的情况下,该办公室可能会变得很暗。

–Parthian Shot
14年7月17日在21:27

#3 楼

我使用的最大的是离散的命名方案,其中prod-system的命名明显不同于test / dev实例。这使“ Username @ Hostname:”样式提示明显不同。很明显,我不仅指的是不同的词,也包括不同的格式:

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

这有很多好处:


多余的叠合块使它成为三件套,而不是二件套。
第一个是不同的长度。
名称的总长度明显不同,这使得命令行间距相对于彼此以及窗口中的其他文本有所不同。

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

以我的经验,您想要的东西可以不断提醒您自己的位置。诸如谜语之类的登录方法大约持续10秒钟,直到您忘记哪个窗口是哪个窗口为止。它所要做的就是在错误的目录中执行ls,以滚动显示不知名的登录横幅,将终端窗口埋入浏览器窗口中,同时进行谷歌搜索,将alt标签返回到错误的窗口,然后出现混乱情况。最好具有一些恒定的视觉提示,例如明显不同的命令提示符。

评论


这对于基本系统确实非常有效,但是一旦您将dev- *更改为prod- *,开发人员就会抱怨和抱怨,因为他们一半的链接停止工作(无论您之前做过多少次),有时系统本身会半途而废,直到您在配置文件中修复所有对旧名称的引用。特别是在安装了专有软件的情况下,DNS别名只能起到很大作用。更糟糕的是,切换窗口时很容易完全忘记提示。

– SilverbackNet
11-10-22在7:17



开发人员需要创建可在开发/测试/登台/生产中使用的设置(这就是我所做的,但这是另一回事了)。有关bash的有效“红色提示”(比看起来更难),请访问serverfault.com/a/479718/79266,查看我的答案

– RichVel
13年2月17日在17:35

#4 楼

您需要记住的一件事是,这需要持久地进行提醒,而不仅仅是登录时的指示符。通常,某人会在不同的选项卡中同时运行多个shell,并在它们之间移动。一些将是开发人员,一些是生产人员。因此,在运行命令时,此时需要一个指示器。因此,以我的经验来看,特殊提示是最好的方法,修改后的标题/标签栏是对它的很好补充,可以轻松地找到正确的窗口/标签。

所以我建议您彩色提示(红色是显而易见的选择),并且主机名全部大写,并且用户的行为(特权与非特权)与您的提示类似。一些示例:在您的shell启动文件中,通常是

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


。这是蓝色的。用红色的44替换41,绿色的​​42替换。其他颜色和百搭图案也可用。

评论


有关bash的有效“红色提示”(比看起来更难),请参阅serverfault.com/a/479718/79266上的答案-还显示git分支,当前目录被截断等。

– RichVel
13年2月17日在17:35

#5 楼

这些是我的建议:

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客户端,则始终可以设置唯一的背景颜色/配置文件以使生产服务器脱颖而出。

评论


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

–赞·山猫
2011-10-19 23:38

#6 楼

只需考虑您的第二和第三个想法在初始连接过程中会有所帮助,但是当您打开多个终端并从一个终端移到另一个终端时,这毫无用处。 sysadmin1138可以使用命名的想法是可以的,但是在很多情况下不能使用。

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

#7 楼

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

这应该导致其他行为:


开发
测试
对登台服务器进行更改
然后快速冲刺生产并在那里进行部署(就像您在登台服务器上所做的一样)


#8 楼

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

拥有一个具有完全sudo权限的帐户。不允许保存sudo会话。禁止sudo su。为此使用单独的密码(而不是您的开发机器使用的密码)。可能需要调整sudo,以在执行命令之前通知外壳的生产身份(通过别名)。

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

评论


用“ sudo su”表示“ sudo -i”或至少是“ sudo su-”,对吗?

– Sparr
11-10-20在11:34

哇!是斯帕!小世界 :)

– Sionide21
2011年10月20日14:07

阻止人们拥有根壳是不可能的。 (sudo bash)。您可以从任何“黑名单”设置中获取根shell。 (如果您谨慎的话,可以通过白名单设置将其停止,但是通常无法保证。)

–user606723
2011-10-20 15:16

它不应阻止对根shell的预期访问-只是人们习惯的一些常用方法,使他们可以在不注意的情况下下意识地进行操作。

– Mihails Strasuns
2011年10月20日16:09

#9 楼

我接受了红色的提示提示,发现查找.bashrc的工作代码非常繁琐。

所以这是我的版本,准备包含在.bashrc-https://github.com/RichVel/nicer-bash-prompt中。它完全由主机名驱动,因此只要您具有适合生产主机名的模式(例如xyprod01xyprod02等),它就可以很好地工作,并且您可以在所有环境中使用相同的.bashrc

它看起来像这样:



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

还包括一个可选功能,可以在所有终端窗口中按照以下方式同步bash历史记录:回答。这很好,但并不是每个人都想要它,因此默认情况下它被禁用。

#10 楼

尽管我不知道您的IT设置是什么样的,但一种可能有效的解决方案是拥有一个特殊的空间,您必须以root身份将SSH进入生产服务器。如果您有一个数据中心,则它可能是服务器机房本身,但是拥有一个单独的物理位置(不进行“正常”工作)将非常有效地不断提醒您正在访问生产机器。

评论


尽管这肯定是有效的,但在大多数情况下,它也会适得其反。

–约翰·加迪尼尔
2011-10-20 3:47

我同意约翰的观点,但这当然是要考虑的事情。

–user606723
2011年10月20日15:10

@JohnGardeniers:适得其反?您是说会损害生产力吗?

– LarsH
2011年10月20日16:59

@LarsH,不必要地进入不同的房间来完成工作的不同部分肯定会损害生产力。您的整个网络应该可以从一个位置进行管理。

–约翰·加迪尼尔
2011年10月20日在20:31

@JohnGardeniers:了解。当您最初说“适得其反”时,我想您的意思是说它的作用与既定目的相反,即不断提醒您正在访问生产机器。

– LarsH
2011年10月20日在21:21

#11 楼

只是对以上建议进行了调整。我将CDE用作我的Unix桌面以及通过.dt / dtwmrc中的菜单访问的所有生产系统。在所有dev和UAT系统上,我保持正常的配色方案,但在产品系统上,我将终端设置为红色背景。我不喜欢这种外观,但那是重点。

eta-错过了Karol提出的基本相同的建议

#12 楼

登录生产机器时,会出现一段警告我这是生产机器,以及一些简短的准则。如果我认为不能独自安全地执行任务,可以打电话给UNIX支持,提醒我炸毁一台生产机可能会花费我的工作,并提醒我所做的一切都已记录。 >
编辑:我在运输行业工作。

评论


哎哟。虽然我可以理解对此的需求,但很高兴我没有在这种环境中工作。

– LarsH
2011年10月20日下午16:58

我很高兴-我在交通部门工作,这些系统在停机时不仅会花钱,还会导致生命损失。

–罗勒
2011年10月20日17:57

很高兴您也这么小心!

– LarsH
2011年10月20日21:15

#13 楼

在PuTTY中,您可以将窗口的标题更改为特定已保存会话的默认名称以外的名称。无论您在窗口内做什么,它始终保留在窗口上。这也会显示在任务栏中。

展开窗口,单击“行为”。在窗口标题中输入以下内容:

  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * *


#14 楼

简单的答案?在外壳配置中将外壳的颜色更改为红色。它将是显而易见的,并且设置起来很简单。不仅如此,而且与服务器头不同,在键入一些命令后它不会消失。

#15 楼

这是我在Mac上执行的操作。对于每台服务器,我都会在〜/ .ssh / config文件中为其添加一个条目,例如

Host app13
    HostName server.example.com
    User tom
    PermitLocalCommand yes
    LocalCommand osascript %d/bin/change_terminal_colours.scpt 12 35 35


建立SSH会话后便会触发此Applescript。它将终端背景色设置为提供的RGB值(如果未提供颜色值,则设置为默认值)。可能棘手的部分是拦截SSH会话的结束,以将颜色设置回默认值。为此,我将以下shell脚本创建为〜/ bin / ssh,以覆盖默认的ssh命令。这实际上是拦截并包装对SSH命令的所有调用。我尝试使用别名和函数,但此解决方案效果最佳:

#!/bin/bash
/usr/bin/ssh $@
osascript ~/bin/change_terminal_colours.scpt


这是change_terminal_colours.scpt脚本的来源。还将它放在您的〜/ bin目录中:

on run argv
    tell application "Terminal"
        # NOTE: Color values range from 0 to 65535.
        if (count of argv) > 0 then
            set backgroundColor to {(item 1 of argv) * 256, (item 2 of argv) * 256, (item 3 of argv) * 256}
        else
            set backgroundColor to background color of default settings
        end if

        try
            set background color of (selected tab of front window) to backgroundColor
        end try
    end tell
end run


我一周前写了这个解决方案,从那以后一直在使用它。我希望其他人觉得它有价值。我发现它比Googling找到的任何解决方案都更好。

#16 楼

我的小组使用visionapp远程桌面(2017年编辑:该产品已重命名,但我认为是相同的)同时用于RDP到Windows计算机和SSH到Linux计算机。我们的连接按层分组到文件夹中并分配标签颜色。

因此,无论何时我们打开生产连接-bam! -我们的脸上露出鲜红色:



如果您是一家大型Windows商店并且非常依赖RDP,那绝对是一笔值得的投资。我敢打赌,如果您只需要SSH,那么还有其他出色的工具。

#17 楼

除了独特的提示(这似乎是最可靠的解决方案)之外,如果您从同一工作站登录,则可以为SSH会话使用不同的配置文件。例如,我有生产系统的红色背景,开发的绿色背景,基础设施(路由器等)的蓝色背景,本地工作站的白色。

如果您使用GNOME,则有一种简便的方法来启动与所需的SSH连接配置文件:

gnome-terminal --window-with-profile=production -e 'ssh root@production.example.com'

主要缺点-它是客户端,因此,如果要从其他位置访问服务器,则最好还是使用特殊提示。

#18 楼

另一种清楚表明您正在使用生产系统的方法是在生产系统上设置TMOUT(自动注销)功能。

评论


究竟如何使它变得清楚?这也可能非常危险,因为命令或进程可能正在运行,并且由于注销会话而突然中止。

–约翰·加迪尼尔
2011年10月20日在1:24

我刚刚测试了TMOUT,看起来如果正在运行长时间运行的命令,它不会终止会话。仅当您坐在命令提示符下时,它才会终止它。尼尔斯也提出了这个建议,这对我来说很有意义。

– sjbotha
2011-10-20 15:16

这是TMOUT的真正好处。在发现TMOUT之前,我们使用了autolog甚至killerd。 autolog和killerd并不是很好。 killerd还是越野车,往往会阻塞一个完整的CPU ...

–指甲
2011年10月20日在20:29

#19 楼

由于在特定行业中工作时对法规的要求很高,因此这里记录了每个人的活动,以防将来发生任何纠纷。因此,访问也受到限制,您必须跳过一些“菜单”,这些菜单使您可以作为少数几个受信任的用户之一来访问计算机。通过设置此系统,人员必须有意识地选择PRODUCTION或QA环境,然后从列表中选择要访问的主机。这也有一个超时期限,因此您不会遇到登录产品主机并忘记第二天所处环境的情况。

#20 楼

我在这里使用提示更改,就像其他人一样。它既快速又讨厌,但是可以很好地用于我的目的。在生产系统上,它将以普通用户的身份给您红色,在生产系统上以root的身份给您提供红色大写。

它可以用更少的行写,但是我这样做是这样,所以我可以根据需要调整其他2种情况(非root-non prod)。

我们假设生产服务器不使用DHCP,但您可以使用任何其他方法来确定其生产系统。一切为您工作。

q4312078q

评论


尽管脚本很有趣,但是仅在生产系统上使用静态IP的假设并不常见。在大多数情况下,所有服务器在开发和生产中都将具有静态IP。

–马丁·海默斯(Martijn Heemels)
11-10-20在21:13

真正的课程。我们的开发系统使用dhcp保留。您可以使用任何适合您的系统,例如比较主机名,子网,VLAN等。

– Sirex
2011年10月21日,下午6:55

@Sirex,也可以相反。例如,Amazon EC2 VPS在生产服务器上使用静态DHCP租约,并转发公共IP。实例本身并不直接知道它背后运行的是哪个公共IP,至少在网络接口级别上是不知道的。

–马修·沙利(Matthew Scharley)
2011年10月22日,11:01

对。您总是可以拥有一个角色rpm软件包,该软件包创建/ etc / PRODUCTION文件并对此进行测试。无论您的船浮在水上。

– Sirex
2011-10-25 11:39

#21 楼

在生产机器上使用不同的(也许更长的)root密码。

您可以创建特殊的sudo(或sudo包装器),以便为生产机器输出特殊的消息。

评论


..生产机器上的其他root密码?我为什么没想到呢?

–user606723
2011-10-20 15:08



另外,sudo已经有很多配置选项。如果您还不能做到这一点,我会感到惊讶。自定义sudo是一个糟糕的主意,因为对其进行测试不足以获取suid位。

–user606723
2011年10月20日15:08

#22 楼

在这里,我们具有默认的腻子配置,以使整个屏幕的前景色变为亮粉红色。


产品:亮粉红色。
回归:浅绿色
模型:淡蓝色
Dev:正常

它很好用,但我确实喜欢这里的其他一些想法。


Pro:除非有什么不使用前景色..,每个产品屏幕
都是亮粉红色。
缺点:很明显,如果您通过除默认
putty配置以外的内容进行SSH操作,则此操作什么都不会执行。


#23 楼

在.bashrc / .bash_profile中

echo " THIS IS THE PRODUCTION SYSTEM. BE RESPONSIBLE.. " ..