私の会社の何人かは、実稼働サーバーにルートアクセスできます。私たちは、ssh'dしたときにそれを非常に明確にする良い方法を探しています。
私たちが持っていたいくつかのアイデアは次のとおりです。
- 明るい赤のプロンプト
- シェルを取得する前に謎に答える
- シェルを取得する前にランダムな単語を入力します
運用システムを差別化するために皆さんが使用しているテクニックは何ですか?
私の会社の何人かは、実稼働サーバーにルートアクセスできます。私たちは、ssh'dしたときにそれを非常に明確にする良い方法を探しています。
私たちが持っていたいくつかのアイデアは次のとおりです。
運用システムを差別化するために皆さんが使用しているテクニックは何ですか?
回答:
赤いプロンプトは良いアイデアであり、私も使用しています。
もう1つのトリックは、/etc/motd
ファイルに大きなASCIIアート警告を入れることです。
ログイン時にこのような何かがあなたを迎えて、あなたの注意を引く必要があります:
_______ _ _ _____ _____ _____ _____ | __ __ | | | | _ _ | / ____ | | _ _ | / ____ | / \ | | | | __ | | | | | (___ | | |(___ / \ | | | __ | | | \ ___ \ | | \ ___ \ / / \ \ | | | | | | _ | | _ ____)| _ | | _ ____)| / ____ \ | _ | | _ | | _ | _____ | _____ / | _____ | _____ / / _ / \ _ \ _____ _____ ____ _____ _ _ _____ _______ _____ ____ _ _ | __ \ | __ \ / __ \ | __ \ | | | | / ____ | __ __ | _ _ / __ \ | \ | | | | __)| | __)| | | | | | | | | | | | | | || | | | \ | | | ___ / | _ / | | | | | | | | | | | | | | || | | | 。`| | | | | \ \ | | __ | | | __ | | | __ | | | ____ | | _ | || | __ | | | \ | | _ | | _ | \ _ \\ ____ / | _____ / \ ____ / \ _____ | | _ | | _____ \ ____ / | _ | \ _ | __ __ _____ _ _ _____ _ _ ___ ______ | \ / | / \ / ____ | | | | _ _ | \ | | ____ | | \ / | / \ | | | | __ | | | | | \ | | | __ | | \ / | | / / \ \ | | | __ | | | | 。`| __ | | | | | / ____ \ | ____ | | | | _ | | _ | | \ | | ____ | _ | | _ / _ / \ _ \ _____ | _ | | _ | _____ | _ | \ _ | ______ |
このWebサイトでこのような警告を生成するか、figlet
コマンドを使用できます。
コメントで提案されたニコラス・スミスのように、cowsay
コマンドを使用していくつかのドラゴンや他の動物で物事をスパイスすることができます。
/ etc / motdファイルを使用する代わりに、cowsay
またはファイルfiglet
内で呼び出すこともでき.profile
ます。
まったく同じことではありませんが、このWebサイトでは、運用システムに変更を加える際に、開発者にピンクのソンブレロを着用させることをお勧めします。あなたはおそらくそれらに打ち込むための同様のルールを持つことができます。
私が使用した中で最大のものは、prod-systemの名前がtest / devインスタンスとは明らかに異なる、個別の命名スキームです。これにより、「Username @ Hostname:」スタイルのプロンプトが視覚的に異なります。そして、明らかに、私は単に異なる単語、異なるフォーマットも超えていることを意味します:
例:PRD-WEB001 vs DEVEL-BOB-WEB001
これにはいくつかのことがあります:
そして何よりも、Oopsエラーを回避するためだけに、本番用の特別な端末構成を必要としません。
私の経験では、あなたはあなたがどこにいるかを常に思い出させるものが欲しいです。なぞなぞのようなログイン方法は、どのウィンドウがどれであるかを忘れるまで、約10秒間有効です。必要なのls
は、間違ったディレクトリで不吉なログインバナーをスクロールして非表示にし、端末ウィンドウをブラウザウィンドウの下に埋めて何かをグーグルし、Alt-tabキーを押して間違ったウィンドウに戻り、混乱が続くことです。大幅に異なるコマンドプロンプトのような一定の視覚的キューを用意するのが最善です。
留意する必要があることの1つは、これはログイン時の単なるインジケータではなく、永続的なリマインダーである必要があるということです。非常に多くの場合、誰かが異なるタブで複数のシェルを同時に実行し、それらの間を移動します。一部は開発者、一部は本番です。したがって、コマンドを実行しているときは、その時点でインジケーターが必要です。ですから、私の経験では、適切なウィンドウ/タブを簡単に見つけるには、修正されたタイトル/タブバーがこれを補完する最適な方法です。
そのため、色付きのプロンプト(明白な選択は赤)とホスト名のすべての上限を持ち、ユーザーと同様の動作(特権と非特権)をプロンプトとして使用することをお勧めします。いくつかの例:
通常のようなもの
set prompt = "%{\033[1;44m%}`whoami`@`hostname -s`#%{\033[0m%} "`
シェルスタートアップファイル。これは青用です。元に戻し44
て41
モミ、赤、42
緑。他の色と野生のパターンも利用できます。
これらは私の提案です:
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クライアントを使用する場合、固有の背景色/プロファイルをいつでも設定して、本番サーバーを際立たせることができます。
最初の接続では2番目と3番目のアイデアが役立ちますが、複数の端末を開いて1つの端末から別の端末に移動する場合は価値がないと考えてください。sysadmin1138のネーミングを使用するという考え方は、適用できる場合は適切ですが、適用できない場合がたくさんあります。
本当に価値があるとわかったのは、色付きのプロンプトだけです。開発/テスト用の緑、実稼働用の赤、DMZ内のマシン用の青が好きです。そうすれば、交換用のマシンを準備するときなど、同じ名前の(異なるネットワークにある)マシンが2台ある場合でも、どちらのマシンを使用しているかが簡単にわかります。
単純なrootアカウントで本番マシンで作業することは決して良い考えではありません。
完全なsudo権限を持つアカウントを持っています。sudoセッションの保存を許可しません。sudo suを禁止します。別のパスワードを使用します(開発マシン用のパスワードではありません)。おそらくsudoを微調整して、コマンドを実行する前に(aliasを介して)シェルの実稼働IDについて通知します。
それは偶然の間違いを非常に難しいものにします。そして、赤いプロンプトが痛むことはありません。
sudo bash
)。任意の「ブラックリスト」セットアップからルートシェルを取得できます。(注意すれば、ホワイトリスト設定で停止できますが、通常は保証されません。)
私は赤いプロンプトのアイデアを採用しましたが、の作業コードを見つけるのはかなり退屈です.bashrc
。
だからここに私のバージョンは、中に含まれる準備ができます.bashrc
- https://github.com/RichVel/nicer-bash-prompt。あなたは(たとえば、生産ホスト名への適切なパターンを持っているように、それは完全にそう限り、ホスト名によって駆動されますxyprod01
、xyprod02
それがうまくいく、など)、およびあなたは同じを使用することができ.bashrc
、すべての環境で。
次のようになります。
これにより、実稼働ホスト上に赤いプロンプトを含む、より良いbashプロンプトが作成されます-現在のgitブランチと、$ PWDの最後の2つのディレクトリも表示されます。bashでCtrl / R(逆検索)を実行する際に、プロンプト表示を台無しにしないように注意します。
この回答の行に沿って、すべてのターミナルウィンドウ間でbash履歴を同期するオプション機能も含まれています。これは便利ですが、誰もが望んでいるわけではないため、デフォルトでは無効になっています。
ITのセットアップがどのようなものかはわかりませんが、有効なソリューションの1つは、SSHにアクセスしてrootとして本番サーバーに移動する必要がある特別な部屋を持つことです。データセンターがある場合、これはサーバールーム自体である可能性がありますが、「通常の」作業が行われない別の物理的な場所があれば、実稼働マシンにアクセスしていることを常に効果的に通知できます。
これが私の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が見つけたどのソリューションよりもうまく機能することがわかりました。
私のグループは、visionapp Remote Desktop(2017 edit:製品の名前が変更されたようですが、同じものだと思います)を使用して、RDPをWindowsマシンに、SSHをLinuxマシンに使用します。接続は階層ごとにフォルダーにグループ化され、タブの色が割り当てられます。
したがって、本番接続を開くたびに-bam!-顔に明るい赤が出ます:
あなたが大規模なWindowsショップであり、RDPに大きく依存している場合、それは間違いなく価値のある投資です。必要なのがSSHだけである場合、他の優れたツールもあると思います。
一意のプロンプト(最も信頼性の高いソリューションと思われる)を別にして、同じワークステーションからログインしている場合は、SSHセッションに異なるプロファイルを使用できます。
たとえば、本番システムの背景が赤、開発用の緑、インフラストラクチャ(ルーターなど)の青、ローカルワークステーションの白があります。
GNOMEを使用している場合、目的のプロファイルでSSH接続を起動する簡単な方法があります。
gnome-terminal --window-with-profile=production -e 'ssh root@production.example.com'
主な欠点-それはクライアント側であるため、異なる場所からサーバーにアクセスしている場合、特別なプロンプトが依然として最善の策です。
実稼働システムにいることを明確にする別の方法は、実稼働システムでTMOUT(自動ログアウト)機能を設定することです。
ここで他の人と同じようにプロンプトの変更を使用します。その迅速かつ厄介ですが、私の目的のために正常に動作します。本番システムでは通常のユーザーとして赤、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
実動マシン上で異なる(おそらくより長い)rootパスワードを持っている。
特別なsudo(またはsudoラッパー)を作成して、本番マシン用に特別なメッセージを出力できます。
ここでは、画面全体の前景色を明るいピンクにするためのデフォルトのパテ構成があります。
それはかなりうまくいきますが、私はここで他のアイデアのいくつかが好きです。