web-dev-qa-db-ja.com

自分が運用システムにいることをどのようにして明らかにしますか?

私の会社の何人かは、本番サーバーでrootアクセス権を持っています。 sshを実行したときにexceedingly clearにするための良い方法を探しています。

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

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

制作システムを差別化するために使用しているテクニックは何ですか?

136
Sionide21

赤いプロンプトは良い考えで、私も使用しています。

もう1つのトリックは、/etc/motdファイルに大きなASCIIアート警告を入れることです。
ログインすると、このようなメッセージが表示されるので注意が必要です。

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

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

figlet

ニコラススミスがコメントで提案したように、cowsayコマンドを使用して、ドラゴンや他の動物で物事を盛り上げることができます。

dragon cowsay

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

137

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

developer wearing a pink sombrero

80
Aric TenEyck

私が使用した中で最大のものは、prodシステムがtest/devインスタンスとは明らかに異なる名前が付けられている個別の命名スキームです。これにより、 "Username @ Hostname:"スタイルのプロンプトが明らかに異なります。そして当然のことながら、私は単に異なる単語だけでなく、異なる形式も意味します。

例:PRD-WEB001とDEVEL-BOB-WEB001

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

  • 追加のhypenatedブロックにより、2つのセットではなく3つのセットになります。
  • セットの最初のものは別の長さです。
  • 名前の全長は著しく異なります。そのため、コマンドラインの間隔は、ウィンドウ内の他のテキストや他のテキストと比べて異なります。

そして何よりも、Oopsエラーを回避するためだけに、本番環境で特別なterminal-configsを必要としません。

私の経験では、あなたは自分がどこにいるかを常に思い出させる何かを求めています。なぞなぞのようなログイン方法は、どちらのウィンドウかを忘れるまで、約10秒間有効です。必要なのは、間違ったディレクトリでlsを実行して不審なログインバナーを見えないようにスクロールし、何かをグーグルしながらターミナルウィンドウをブラウザウィンドウの下に埋め込み、altキーを押しながら間違ったウィンドウと騒乱に戻ることです。続く。大きく異なるコマンドプロンプトのような一定の視覚的な手がかりを持つのが最善です。

50
sysadmin1138

あなたが覚えておく必要があることの一つは、これはログイン時のインジケーターだけでなく、持続的なリマインダーでなければならないということです。多くの場合、誰かが複数のシェルを同時に異なるタブで実行し、それらの間を移動します。一部は開発、一部はプロダクションになります。したがって、コマンドを実行しているときは、その時点でインジケーターが必要です。したがって、特別なプロンプトを表示することは、私の経験では最良の方法であり、変更されたタイトル/タブバーは、適切なウィンドウ/タブを簡単に見つけるための素晴らしい補完機能です。

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

colored prompts example

通常のようなもの

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

シェルスタートアップファイル内。これは青用です。 4441モミ赤、および42緑。 他の色とワイルドパターンも利用可能

41
Tim

これらは私の提案です:

1)本番環境のほとんどのコマンド(rm、chown、chmod、/ etc/init.d/*)にSudoアクセスが必要であることを確認します

2)PS1/PS2を使用して、ユーザーが製品サーバーにいることを示します

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

これにより、コマンドプロンプトが次のように表示されます。

[sridhar@prodappserver901 conf]$

3)PuTTY/SSHクライアントを使用している場合は、常に一意の背景色/プロファイルを設定して、本番サーバーを目立たせることができます。

14

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

私が本当に価値があるとわかった唯一のものは、色付きのプロンプトです。 DMZの開発/テストには緑、製品には赤、マシンには青が好きです。そうすれば、交換用のマシンを準備するときなど、同じ名前の(異なるネットワークにある)2つのマシンがあったとしても、どちらのマシンにいるかを簡単に確認できます。

13
John Gardeniers

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

これは別の動作につながるはずです:

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

プレーンルートアカウントを使用して本番マシンで作業することは決して良い考えではありません。

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

それは偶然の間違いをかなり難しいものにします。そして赤いプロンプトは決して痛くない。

9

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

これが私のバージョンです。.bashrc- https://github.com/RichVel/nicer-bash-Prompt に含める準備ができています。ホスト名によって完全に駆動されるため、本番ホスト名に適切なパターンがある場合(xyprod01xyprod02など)、問題なく機能し、同じ.bashrcを使用できます。すべての環境で。

次のようになります。

screenshot of red Prompt

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

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

8
RichVel

あなたのITセットアップがどのようなものかはわかりませんが、効果的な解決策の1つは、rootとして実稼働サーバーにSSHでアクセスする必要がある特別な部屋を用意することです。データセンターがある場合、これはサーバールーム自体である可能性がありますが、「通常の」作業が行われない別の物理的な場所があると、運用マシンにアクセスしていることを常に思い出させる効果があります。

5
Kyle Cronin

本番マシンにログインすると、本番マシンであることを警告する段落と、ガイドラインの短いリストが表示されます。タスクを一人で安全に実行できないと思われる場合に、UNIXサポートに問い合わせることができる番号がいくつかあります。本番マシンを爆破すると私の仕事にコストがかかる可能性があること、およびすべての作業がログに記録されることを通知します。

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

4
Basil

上記の提案の微調整。私はUNIXデスクトップとしてCDEを使用し、.dt/dtwmrcのメニューからアクセスするすべての本番システムを使用しています。すべての開発システムとUATシステムでは通常の配色を維持していますが、製品システムでは端末の背景を赤に設定しています。見た目は嫌いですが、それがポイントです。

eta-基本的に同じことをカロルが提案していない

4
Wudang

これが私の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
TomWardrop

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

したがって、プロダクション接続を開くときはいつでも、bam! -顔に明るい赤が表示されます。

enter image description here

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

3
Nick Chammas

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

3
donatJ

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

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

  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * * PRODUCTION  * * * * * * * * * * * *
3
sjbotha

本番システムにいることを明確にするもう1つの方法は、本番システムにTMOUT(自動ログアウト)機能を設定することです。

2
Peter K.

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

2
Alexandra

ここでは他のようにプロンプ​​トの変更を使用します。速くて厄介ですが、私の目的には問題ありません。本番システムでは通常のユーザーとして赤、prodシステムではrootとして赤の大文字が表示されます。

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

本番サーバーはDHCPを使用しないという前提で作業しますが、本番システムの場合は、他の方法を使用して問題を解決できます。あなたのために働くものは何でも。


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
2
Sirex

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

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

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

gnome-terminal --window-with-profile=production -e 'ssh [email protected]'

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

2
Karol J. Piczak

.bashrc/.bash_profile

echo " THIS IS THE PRODUCTION SYSTEM. BE RESPONSIBLE.. " .. 
1
Jay D

本番マシンで異なる(おそらく長い)ルートパスワードを使用します。

特別なメッセージが本番マシンに出力されるように、特別なSudo(またはSudoラッパー)を作成できます。

1
mdpc

ここでは、デフォルトのPuTTY構成を使用して、画面全体の前景色を明るいピンクにしています。

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

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

  • プロ:何かが前景色を使用しない限り、すべての製品画面は明るいピンクです。
  • 欠点:もちろん、デフォルトのPuTTY構成以外のものを使用してSSHを実行しても、何も実行されません。
1
user606723