実稼働システムにいることをどのように明らかにしますか?


135

私の会社の何人かは、実稼働サーバーにルートアクセスできます。私たちは、ssh'dしたときにそれを非常に明確にする良い方法を探しています。

私たちが持っていたいくつかのアイデアは次のとおりです。

  • 明るい赤のプロンプト
  • シェルを取得する前に謎に答える
  • シェルを取得する前にランダムな単語を入力します

運用システムを差別化するために皆さんが使用しているテクニックは何ですか?


11
本番システムへのSSHを回避するように人々に教える方法はありますか?たとえば、すべてをPuppetにチェックインしている場合、トラブルシューティングのために本番システムにログインするだけで済みます。
アレックスホルスト

37
実稼働システムでroot sshアクセスを許可しますか???? !!!!!
symcbean

7
@symcbean:それはシオニドが言ったことではありません。彼は、ユーザーアカウントにSSHで接続した後に意味を持ちます。
ザンリンクス

3
この質問はコミュニティWikiの候補になりますか?
MadHatter

15
SSHを無効にすることで、本番システムであることを非常に明確にすることができます。それ以上明確にすることはできません。
フランシペノフ

回答:


137

赤いプロンプトは良いアイデアであり、私も使用しています。

もう1つのトリックは、/etc/motdファイルに大きなASCIIアート警告を入れることです。
ログイン時にこのような何かがあなたを迎えて、あなたの注意を引く必要があります:

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


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


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

このWebサイトこのような警告を生成するか、figlet コマンドを使用できます。

フィグレット

コメントで提案されたニコラス・スミスのように、cowsayコマンドを使用していくつかのドラゴンや他の動物で物事をスパイスすることができます。

ドラゴンカウセイ

/ etc / motdファイルを使用する代わりに、cowsayまたはファイルfiglet内で呼び出すこともでき.profileます。


3
ああ、私はそれが好きです!
シオニデ21年

13
何らかのコマンドを入力した場合、それはもう表示されません。
ニルス

3
確かに、赤いプロンプトが便利なのはそこです。
ケニーラッシャールト

41
Windowsサーバーでは、鮮やかなピンク色のデスクトップカラーと鮮やかな黄色のタイトルバー/カラースキームを使用しているため、非常にわかりやすくなっています。これは、着色、コマンドプロンプトの私たちのバージョンである
マーク・ヘンダーソンは

8
ASCIIドラゴンをミックスに追加したいと思います。
ニコラススミス

80

まったく同じことではありませんが、このWebサイトでは、運用システムに変更を加える際に、開発者にピンクのソンブレロを着用させることをお勧めします。あなたはおそらくそれらに打ち込むための同様のルールを持つことができます。

ピンクのソンブレロを着ている開発者


1
ハハ!+1だから しかし、真剣に、人々はそれらを身に着けている間、彼らの失われた眼鏡を探すことができます、私は帽子が「一定のリマインダー」として役立つことを疑います。また、どのウィンドウがどのウィンドウであるかを思い出すのに役立ちません。
フェリックスDombek

7
ええ、次のようにプロセスを変更する必要があります:1)制作を編集したいという要望を宣言します。2)ソンブレロを取り出し、他のすべてのウィンドウを閉じます。3)誰もが見ている間に制作を行います。4)セッションからログアウトし、ソンブレロを削除します。
アリックTenEyck

1
「2)ソンブレロを取り出して、他のすべてのウィンドウを閉じます」これは、すべてのSOPのステップ2であるため、私の会社では実際には機能しません。ステップ1はもちろん「明かりをつける」ことです。なぜなら、窓を閉じた状態では、このオフィスではかなり暗くなるからです。
パルティアショット14

50

私が使用した中で最大のものは、prod-systemの名前がtest / devインスタンスとは明らかに異なる、個別の命名スキームです。これにより、「Username @ Hostname:」スタイルのプロンプトが視覚的に異なります。そして、明らかに、私は単に異なる単語、異なるフォーマットも超えていることを意味します:

例:PRD-WEB001 vs DEVEL-BOB-WEB001

これにはいくつかのことがあります:

  • 追加のハイプネーションブロックにより、2つではなく3つになります。
  • セットの最初の長さは異なります。
  • 名前の全体の長さは著しく異なるため、コマンドラインの間隔は、ウィンドウ内の他のテキストと相互に異なります。

そして何よりも、Oopsエラーを回避するためだけに、本番用の特別な端末構成を必要としません。

私の経験では、あなたはあなたがどこにいるかを常に思い出させるものが欲しいです。なぞなぞのようなログイン方法は、どのウィンドウがどれであるかを忘れるまで、約10秒間有効です。必要なのlsは、間違ったディレクトリで不吉なログインバナーをスクロールして非表示にし、端末ウィンドウをブラウザウィンドウの下に埋めて何かをグーグルし、Alt-tabキーを押して間違ったウィンドウに戻り、混乱が続くことです。大幅に異なるコマンドプロンプトのような一定の視覚的キューを用意するのが最善です。


これは基本的なシステムでは非常にうまく機能しますが、dev- *をprod- *に変更すると、リンクの半分がdevsのうめき声とうめき声になります(以前に何度行っても)。システム自体は、設定ファイル内の古い名前への多数の参照をすべて修正するまで、半分の作業に沿って動きます。特に、プロプライエタリなソフトウェアがインストールされている場合、DNSエイリアスは非常に役立ちます。さらに悪いことに、ウィンドウを切り替える際にプロンプ​​トを完全に忘れてしまいがちです。
SilverbackNet

開発者は、開発/テスト/ステージング/プロダクション全体で機能する設定を作成する必要があります(これは私が行っていることですが、別の話です)。bashのための作業を「赤プロンプト」(それはそうよりも硬い)については、次の私の答えを参照してくださいserverfault.com/a/479718/79266
RichVel

39

留意する必要があることの1つは、これはログイン時の単なるインジケータではなく、永続的なリマインダーである必要があるということです。非常に多くの場合、誰かが異なるタブで複数のシェルを同時に実行し、それらの間を移動します。一部は開発者、一部は本番です。したがって、コマンドを実行しているときは、その時点でインジケーターが必要です。ですから、私の経験では、適切なウィンドウ/タブを簡単に見つけるには、修正されたタイトル/タブバーがこれを補完する最適な方法です。

そのため、色付きのプロンプト(明白な選択は赤)とホスト名のすべての上限を持ち、ユーザーと同様の動作(特権と非特権)をプロンプトとして使用することをお勧めします。いくつかの例:

色付きのプロンプトの例

通常のようなもの

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

シェルスタートアップファイル。これは青用です。元に戻し4441モミ、赤、42緑。他の色と野生のパターンも利用できます


(それはそうより難しい)bashのための作業を「プロンプト赤」の、で私の答えを参照serverfault.com/a/479718/79266を -等もgitのブランチ、切り捨てカレントディレクトリを示し、
RichVel

14

これらは私の提案です:

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などを使用する必要があるため、実用的ではありません。
Zan Lynx

13

最初の接続では2番目と3番目のアイデアが役立ちますが、複数の端末を開いて1つの端末から別の端末に移動する場合は価値がないと考えてください。sysadmin1138のネーミングを使用するという考え方は、適用できる場合は適切ですが、適用できない場合がたくさんあります。

本当に価値があるとわかったのは、色付きのプロンプトだけです。開発/テスト用の緑、実稼働用の赤、DMZ内のマシン用の青が好きです。そうすれば、交換用のマシンを準備するときなど、同じ名前の(異なるネットワークにある)マシンが2台ある場合でも、どちらのマシンを使用しているかが簡単にわかります。


11

赤/特別なコマンドプロンプトは良好です。もう1つは、TMOUT変数を使用して、これらのマシンでより迅速に自動ログアウトすることです。多くのウィンドウを開いている場合、実稼働ウィンドウはより速く消えます。

これは異なる振る舞いにつながるはずです:

  1. 開発する
  2. テスト
  3. ステージングサーバーに変更を加える
  4. その後、本番環境へのクイックダッシュを行い、そこで展開します(ステージングサーバーで実行したのとまったく同じです)。

9

単純なrootアカウントで本番マシンで作業することは決して良い考えではありません。

完全なsudo権限を持つアカウントを持っています。sudoセッションの保存を許可しません。sudo suを禁止します。別のパスワードを使用します(開発マシン用のパスワードではありません)。おそらくsudoを微調整して、コマンドを実行する前に(aliasを介して)シェルの実稼働IDについて通知します。

それは偶然の間違いを非常に難しいものにします。そして、赤いプロンプトが痛むことはありません。


「sudo su」とは、「sudo -i」または少なくとも「sudo su-」を意味します。
スパー

おっ!それはスパーです!小さな世界:)
Sionide21

1
人々がルートシェルを持つことを止めることは不可能です。(sudo bash)。任意の「ブラックリスト」セットアップからルートシェルを取得できます。(注意すれば、ホワイトリスト設定で停止できますが、通常は保証されません。)
user606723

1
ルートシェルへの意図的なアクセスを妨げることは想定されていません-人々が無意識のうちに注意を払わずにそれを行うことができるように慣れている一般的な方法の一部のみです。
ミハイルストラスンス

8

私は赤いプロンプトのアイデアを採用しましたが、の作業コードを見つけるのはかなり退屈です.bashrc

だからここに私のバージョンは、中に含まれる準備ができます.bashrc- https://github.com/RichVel/nicer-bash-prompt。あなたは(たとえば、生産ホスト名への適切なパターンを持っているように、それは完全にそう限り、ホスト名によって駆動されますxyprod01xyprod02それがうまくいく、など)、およびあなたは同じを使用することができ.bashrc、すべての環境で。

次のようになります。

赤いプロンプトのスクリーンショット

これにより、実稼働ホスト上に赤いプロンプトを含む、より良いbashプロンプトが作成されます-現在のgitブランチと、$ PWDの最後の2つのディレクトリも表示されます。bashでCtrl / R(逆検索)を実行する際に、プロンプト表示を台無しにしないように注意します。

この回答の行に沿って、すべてのターミナルウィンドウ間でbash履歴を同期するオプション機能も含まれています。これは便利ですが、誰もが望んでいるわけではないため、デフォルトでは無効になっています。


5

ITのセットアップがどのようなものかはわかりませんが、有効なソリューションの1つは、SSHにアクセスしてrootとして本番サーバーに移動する必要がある特別な部屋を持つことです。データセンターがある場合、これはサーバールーム自体である可能性がありますが、「通常の」作業が行われない別の物理的な場所があれば、実稼働マシンにアクセスしていることを常に効果的に通知できます。


2
これは確かに効果的ですが、ほとんどの場合、非常に非生産的です。
ジョンガーデニアス

私はジョンに同意しますが、これは確かに考えることです。
user606723

@JohnGardeniers:逆効果ですか?生産性を損なうということですか?
LarsH

@LarsHは、仕事のさまざまな部分を行うために別の部屋に不必要に移動しなければならないため、生産性が低下することは間違いありません。ネットワーク全体を単一の場所から管理できる必要があります。
ジョン・ガーデニアス

@JohnGardeniers:わかった。最初に「逆生産的」と言ったとき、その効果は述べられた目的に反している、つまり生産マシンにアクセスしていることを常に思い出させるという意味だと思いました。
LarsH

4

上記の提案を微調整してください。UNIXデスクトップと、.dt / dtwmrcのメニューからアクセスするすべての本番システムとしてCDEを使用しています。すべてのdevおよびUATシステムでは、通常の配色を維持しますが、prodシステムでは、端末の背景を赤に設定します。見た目は好きではありませんが、それは一種のポイントです。

eta-カロルが基本的に同じことを示唆しているのを逃した


4

実稼働マシンにログインすると、実稼働マシンであることを警告する段落と、ガイドラインの短いリストが表示されます。タスクを一人で安全に実行できないと思われる場合は、UNIXサポートに連絡できる番号があります。実稼働マシンを爆破すると仕事に費用がかかることを思い出させてくれます。

編集:私は運輸業界で働いています。


痛い。この必要性は理解できますが、そのような環境では働けないのはうれしいです。
LarsH

1
交通機関で働いています。これらのシステムは、ダウンしたときにお金がかかるだけでなく、人命を犠牲にします。
バジル

あなたもそんなに注意してくれてうれしいです!
LarsH

3

PuTTYでは、ウィンドウのタイトルを特定の保存済みセッションのデフォルト以外の名前に変更できます。これは、ウィンドウ内で何をしても、常にウィンドウに残ります。これはタスクバーにも表示されます。

[ウィンドウ]を展開し、[動作]をクリックします。ウィンドウタイトルに次のように入力します。

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

3

簡単な答え?シェル構成でシェルの色を赤に変更します。セットアップするのは明らかで簡単です。それだけでなく、サーバーヘッダーとは異なり、いくつかのコマンドを入力しても消えません。


3

これが私のMacでの操作です。サーバーごとに、そのエントリを〜/ .ssh / configファイルに追加します。例えば

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

このApplescriptは、SSHセッションが確立されるとトリガーされます。端末の背景色を、指定されたRGB値に設定します(色値が指定されていない場合はデフォルトに戻します)。潜在的にトリッキーな部分は、SSHセッションの終わりをインターセプトして、色をデフォルトに戻すことです。そのために、デフォルトのsshコマンドをオーバーライドするために、次のシェルスクリプトを〜/ bin / 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

1週間前にこのソリューションを作成し、それ以来ずっと使用しています。他の人が価値のあるものを見つけることを願っています Googlingが見つけたどのソリューションよりもうまく機能することがわかりました。


3

私のグループは、visionapp Remote Desktop(2017 edit:製品の名前が変更されたようですが、同じものだと思います)を使用して、RDPをWindowsマシンに、SSHをLinuxマシンに使用します。接続は階層ごとにフォルダーにグループ化され、タブの色が割り当てられます。

したがって、本番接続を開くたびに-bam!-顔に明るい赤が出ます:

ここに画像の説明を入力してください

あなたが大規模なWindowsショップであり、RDPに大きく依存している場合、それは間違いなく価値のある投資です。必要なのがSSHだけである場合、他の優れたツールもあると思います。


2

一意のプロンプト(最も信頼性の高いソリューションと思われる)を別にして、同じワークステーションからログインしている場合は、SSHセッションに異なるプロファイルを使用できます。

たとえば、本番システムの背景が赤、開発用の緑、インフラストラクチャ(ルーターなど)の青、ローカルワークステーションの白があります。

GNOMEを使用している場合、目的のプロファイルでSSH接続を起動する簡単な方法があります。

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

主な欠点-それはクライアント側であるため、異なる場所からサーバーにアクセスしている場合、特別なプロンプトが依然として最善の策です。


2

実稼働システムにいることを明確にする別の方法は、実稼働システムでTMOUT(自動ログアウト)機能を設定することです。


1
どうやってそれが明確になりますか?また、コマンドまたはプロセスが実行されている可能性があり、セッションをログオフすることで突然中止されるため、潜在的に非常に危険です。
ジョンガーデニアス

3
TMOUTをテストしたところ、長時間実行されるコマンドが実行されていてもセッションが終了しないようです。コマンドプロンプトに座っているときにのみ終了します。ニルスもこれを提案し、それは私にとって理にかなっています。
sjbotha

1
それは、TMOUTの素晴らしいところです。TMOUTを発見する前に、自動ログを使用しました。autologとkillerdはそれほど良くありません。killerdが...またバグがあると、一つの完全なCPUをブロックする傾向がある
ニルス

2

特定の業界で働いている際の膨大な規制要件のため、ここではすべての活動が将来の紛争のためにキー記録されます。そのため、アクセスも制限されており、信頼できる少数のユーザーの1人としてマシンにアクセスできるいくつかの「メニュー」をジャンプする必要があります。このシステムを設定することにより、ユーザーは生産環境またはQA環境を意識的に選択し、リストからアクセスしたいホストを選択する必要があります。これにはタイムアウト期間もあるため、prodホストにログオンして翌日にどの環境にいるのかを忘れないようにする必要があります。


2

ここで他の人と同じようにプロンプ​​トの変更を使用します。その迅速かつ厄介ですが、私の目的のために正常に動作します。本番システムでは通常のユーザーとして赤、prodシステムではルートとして赤の大文字が表示されます。

それは少ない行で書くことができますが、私はこのようにして、必要に応じて他の2つのケース(非ルート-非プロド)を微調整できます。

実稼働サーバーはDHCPを使用しないことを前提に作業していますが、prodシステムであれば、他の方法を使用して作業することができます。あなたのために働くものは何でも。

productionSrv=1
grep -qi bootproto=dhcp /etc/sysconfig/network-scripts/ifcfg-*
if [ "$?" -eq 0 ]; then
    productionSrv=0
fi
hostName=`hostname`
userName=`whoami`
if [ $userName == "root" ]
then
    if [ "$productionSrv" == 1 ]
    then
        hostName=`echo $hostName | tr [:lower:] [:upper:]`
        PS1='[\e[0;31m]\u[\e[0m]@[\e[0;31m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;31m]\$[\e[0m]: '
    else
        PS1='[\e[0;31m]\u[\e[0m]@[\e[0;35m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;31m]\$[\e[0m]: '
    fi
    PATH=$PATH:/sbin/
else
    if [ "$productionSrv" == 1 ]
    then
        PS1='[\e[0;32m]\u[\e[0m]@[\e[0;31m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;32m]\$[\e[0m]: '
    else
        PS1='[\e[0;32m]\u[\e[0m]@[\e[0;35m]$hostName[\e[0m][$?][\e[0;31m][\W][\e[0m][\e[0;32m]\$[\e[0m]: '
    fi
fi


スクリプトは興味深いものですが、実稼働システムでのみ静的IPが使用されるという仮定は一般的ではありません。ほとんどの場合、すべてのサーバーには、開発用と本番用の両方の静的IPがあります。
マルタインHeemels

1
コースの馬は本当に。開発システムはdhcp予約を使用します。ホスト名、サブネット、vlanなどを比較するなど、あなたに合ったシステムを使用できます。
Sirex

@Sirex、逆も可能です。たとえば、AmazonのEC2 VPSは実稼働サーバーで静的DHCPリースを使用し、パブリックIPは転送されます。インスタンス自体は、少なくともネットワークインターフェイスレベルでは、背後で実行されているパブリックIPを直接知りません。
マシューシャーリー

1
うん。/ etc / PRODUCTIONファイルを作成してテストするロールrpmパッケージをいつでも持っておくことができます。あなたのボートに浮かぶものは何でも。
Sirex

1

実動マシン上で異なる(おそらくより長い)rootパスワードを持っている。

特別なsudo(またはsudoラッパー)を作成して、本番マシン用に特別なメッセージを出力できます。


.. prodマシンの異なるルートパスワード?なんでそんなこと考えなかったの!?
user606723

また、sudoにはすでに多くの設定オプションがあります。既にこれを行うことができない場合、私は驚くでしょう。カスタムsudoは、suidビットを取得するのに十分なテストが行​​われないため、ひどい考えです。
user606723

1

ここでは、画面全体の前景色を明るいピンクにするためのデフォルトのパテ構成があります。

  • 製品:明るいピンク。
  • 回帰:淡緑色
  • モデル:淡いブルー
  • 開発:通常

それはかなりうまくいきますが、私はここで他のアイデアのいくつかが好きです。

  • Pro:前景色を使用しないものがない限り、すべてのprod画面は明るいピンクです。
  • 欠点:デフォルトのputty構成以外のsshを使用してsshを実行した場合、これは何もしません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.