私の会社の何人かは、本番サーバーでrootアクセス権を持っています。 sshを実行したときにexceedingly clearにするための良い方法を探しています。
私たちが持っているいくつかのアイデアは次のとおりです。
制作システムを差別化するために使用しているテクニックは何ですか?
赤いプロンプトは良い考えで、私も使用しています。
もう1つのトリックは、/etc/motd
ファイルに大きなASCIIアート警告を入れることです。
ログインすると、このようなメッセージが表示されるので注意が必要です。
_______ _ _ _____ _____ _____ _____ | __ __ | | | | _ _ |/____ | | _ _ |/____ |/\ | | | | __ | | | | | (___ | | |(___/\ | | | __ | | |\___\| |\___ \//\\ | | | | | | _ | | _ ____) | _ | | _ ____)|/____\ | _ | | _ | | _ | _____ | _____/| _____ | _____// _/\ _\ _____ _____ ____ _____ _ _ _____ _______ _____ ____ _ _ | __\| __ \/__\| __\| | | |/____ | __ __ | _ _/__\|\| | | | __)| | __)| | | | | | | | | | | | | | || | | |\| | | ___/| _/| | | | | | | | | | | | | | || | | | 。 `| | | | |\\ | | __ | | | __ | | | __ | | | ____ | | _ | || | __ | | |\| | _ | | _ |\_ \\ ____/| _____/\ ____/\ _____ | | _ | | _____\____/| _ |\_ | __ __ _____ _ _ _____ _ _ ______ | \/|/\/____ | | | | _ _ |\| | ____ | | \/|/\ | | | | __ | | | | |\| | | __ | | \/| |//\\ | | | __ | | | | 。 `| __ | | | | |/____\| ____ | | | | _ | | _ | |\| | ____ | _ | | _/_/\ _\_____ | _ | | _ | _____ | _ |\_ | ______ |
このような警告を このWebサイト で生成するか、figlet
コマンドを使用できます。
ニコラススミスがコメントで提案したように、cowsay
コマンドを使用して、ドラゴンや他の動物で物事を盛り上げることができます。
/ etc/motdファイルを使用する代わりに、.profile
ファイルでcowsay
またはfiglet
を呼び出すこともできます。
まったく同じというわけではありませんが、 このWebサイト では、運用システムに変更を加える場合は、開発者にピンクのソンブレロを着用することをお勧めしています。あなたはおそらくそれらにsshingするための同様のルールを持つことができます。
私が使用した中で最大のものは、prodシステムがtest/devインスタンスとは明らかに異なる名前が付けられている個別の命名スキームです。これにより、 "Username @ Hostname:"スタイルのプロンプトが明らかに異なります。そして当然のことながら、私は単に異なる単語だけでなく、異なる形式も意味します。
例:PRD-WEB001とDEVEL-BOB-WEB001
これにはいくつかのことが起こります:
そして何よりも、Oopsエラーを回避するためだけに、本番環境で特別なterminal-configsを必要としません。
私の経験では、あなたは自分がどこにいるかを常に思い出させる何かを求めています。なぞなぞのようなログイン方法は、どちらのウィンドウかを忘れるまで、約10秒間有効です。必要なのは、間違ったディレクトリでls
を実行して不審なログインバナーを見えないようにスクロールし、何かをグーグルしながらターミナルウィンドウをブラウザウィンドウの下に埋め込み、altキーを押しながら間違ったウィンドウと騒乱に戻ることです。続く。大きく異なるコマンドプロンプトのような一定の視覚的な手がかりを持つのが最善です。
あなたが覚えておく必要があることの一つは、これはログイン時のインジケーターだけでなく、持続的なリマインダーでなければならないということです。多くの場合、誰かが複数のシェルを同時に異なるタブで実行し、それらの間を移動します。一部は開発、一部はプロダクションになります。したがって、コマンドを実行しているときは、その時点でインジケーターが必要です。したがって、特別なプロンプトを表示することは、私の経験では最良の方法であり、変更されたタイトル/タブバーは、適切なウィンドウ/タブを簡単に見つけるための素晴らしい補完機能です。
したがって、色付きのプロンプト(赤は明白な選択です)とホスト名のすべての大文字を使用することをお勧めします。ユーザーと同様の動作(特権と非特権)はプロンプトと同じです。いくつかの例:
通常のようなもの
set Prompt = "%{\033[1;44m%}`whoami`@`hostname -s`#%{\033[0m%} "`
シェルスタートアップファイル内。これは青用です。 44
と41
モミ赤、および42
緑。 他の色とワイルドパターンも利用可能 。
これらは私の提案です:
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クライアントを使用している場合は、常に一意の背景色/プロファイルを設定して、本番サーバーを目立たせることができます。
最初の接続では2番目と3番目のアイデアが役立つが、複数の端末を開いて1つの端末から別の端末に移動する場合は価値がないと考えてください。 sysadmin1138のネーミングを使用するという考えは、それを適用できる場合は適切ですが、適用できない場合がたくさんあります。
私が本当に価値があるとわかった唯一のものは、色付きのプロンプトです。 DMZの開発/テストには緑、製品には赤、マシンには青が好きです。そうすれば、交換用のマシンを準備するときなど、同じ名前の(異なるネットワークにある)2つのマシンがあったとしても、どちらのマシンにいるかを簡単に確認できます。
赤/特別なコマンドのプロンプトは良好です。もう1つは、TMOUT変数を使用するこれらのマシンでの自動ログアウトの高速化です。多くのウィンドウを開いた場合、生産ウィンドウはより速く消えます。
これは別の動作につながるはずです:
プレーンルートアカウントを使用して本番マシンで作業することは決して良い考えではありません。
完全なSudo権限を持つアカウントを持っています。 Sudoセッションの保存を許可しません。須藤suを禁止します。別のパスワードを使用してください(開発マシン用のものではありません)。おそらくSudoを微調整して、コマンドを実行する前に(aliasを介して)シェルの実稼働IDについて通知します。
それは偶然の間違いをかなり難しいものにします。そして赤いプロンプトは決して痛くない。
私は赤いプロンプトのアイデアを採用しましたが、.bashrc
の動作するコードを見つけるのはかなり退屈な作業でした。
これが私のバージョンです。.bashrc
- https://github.com/RichVel/nicer-bash-Prompt に含める準備ができています。ホスト名によって完全に駆動されるため、本番ホスト名に適切なパターンがある場合(xyprod01
、xyprod02
など)、問題なく機能し、同じ.bashrc
を使用できます。すべての環境で。
次のようになります。
これにより、運用ホストでの赤いプロンプトを含むより良いbashプロンプトが作成されます-現在のgitブランチと$ PWDの最後の2つのディレクトリも表示されます。 bashでCtrl/R(逆検索)を実行するときに、プロンプト表示が混乱しないように注意してください。
この答え の行に沿って、すべてのターミナルウィンドウでbash履歴を同期するオプション機能も含まれています。これは素晴らしいですが、誰もがそれを望んでいるわけではないため、デフォルトでは無効になっています。
あなたのITセットアップがどのようなものかはわかりませんが、効果的な解決策の1つは、rootとして実稼働サーバーにSSHでアクセスする必要がある特別な部屋を用意することです。データセンターがある場合、これはサーバールーム自体である可能性がありますが、「通常の」作業が行われない別の物理的な場所があると、運用マシンにアクセスしていることを常に思い出させる効果があります。
本番マシンにログインすると、本番マシンであることを警告する段落と、ガイドラインの短いリストが表示されます。タスクを一人で安全に実行できないと思われる場合に、UNIXサポートに問い合わせることができる番号がいくつかあります。本番マシンを爆破すると私の仕事にコストがかかる可能性があること、およびすべての作業がログに記録されることを通知します。
編集:私は運輸業界で働いています。
上記の提案の微調整。私はUNIXデスクトップとしてCDEを使用し、.dt/dtwmrcのメニューからアクセスするすべての本番システムを使用しています。すべての開発システムとUATシステムでは通常の配色を維持していますが、製品システムでは端末の背景を赤に設定しています。見た目は嫌いですが、それがポイントです。
eta-基本的に同じことをカロルが提案していない
これが私の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が見つけたどのソリューションよりもうまく機能することがわかりました。
私のグループは、WindowsマシンへのRDPとLinuxマシンへのSSHの両方に visionapp Remote Desktop (2017編集:製品の名前が変更されたように見えますが、同じだと思います)を使用しています。接続は階層ごとにフォルダにグループ化され、タブの色が割り当てられています。
したがって、プロダクション接続を開くときはいつでも、bam! -顔に明るい赤が表示されます。
大きなWindowsショップで、RDPに大きく依存している場合、これは間違いなく価値のある投資です。 SSHが必要な場合は、他にも優れたツールがあると思います。
簡単な答えは?シェル設定でシェルの色を赤に変更します。それは完全に明白で、セットアップするのは簡単です。それだけでなく、サーバーヘッダーとは異なり、いくつかのコマンドを入力しても消えません。
PuTTYでは、ウィンドウのタイトルを、特定の保存されたセッションのデフォルト以外のものに変更できます。これは、ウィンドウ内で何をしても、常にウィンドウに残ります。これはタスクバーにも表示されます。
[ウィンドウ]を展開し、[動作]をクリックします。次のようなウィンドウタイトルに何かを入力します。
* * * * * * * * * * * * PRODUCTION * * * * * * * * * * * * PRODUCTION * * * * * * * * * * * *
本番システムにいることを明確にするもう1つの方法は、本番システムにTMOUT(自動ログアウト)機能を設定することです。
特定の業界での作業中には膨大な規制要件があるため、ここではすべての活動が将来の紛争についてキーに記録されます。そのため、アクセスも制限されており、少数の信頼できるユーザーの1人としてマシンにアクセスできるようにするいくつかの「メニュー」をジャンプする必要があります。このシステムをセットアップすることにより、ユーザーは本番環境またはQA環境を意識して選択し、アクセスするホストをリストから選択する必要があります。これにはタイムアウト期間もあるので、prod Hostにログオンして次の日にどの環境にいるか忘れることはありません。
ここでは他のようにプロンプトの変更を使用します。速くて厄介ですが、私の目的には問題ありません。本番システムでは通常のユーザーとして赤、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
ユニークなプロンプト(最も信頼できるソリューションのようです)とは別に、同じワークステーションからログインしている場合は、SSHセッションに異なるプロファイルを使用できます。
たとえば、本番システムの背景は赤、開発は緑、インフラストラクチャ(ルーターなど)は青、ローカルワークステーションは白です。
GNOMEを使用する場合、目的のプロファイルでSSH接続を起動する簡単な方法があります。
gnome-terminal --window-with-profile=production -e 'ssh [email protected]'
主な欠点-クライアント側であるため、別の場所からサーバーにアクセスする場合は、特別なプロンプトが最善の策です。
.bashrc/.bash_profile
echo " THIS IS THE PRODUCTION SYSTEM. BE RESPONSIBLE.. " ..
本番マシンで異なる(おそらく長い)ルートパスワードを使用します。
特別なメッセージが本番マシンに出力されるように、特別なSudo(またはSudoラッパー)を作成できます。
ここでは、デフォルトのPuTTY構成を使用して、画面全体の前景色を明るいピンクにしています。
それはかなりうまくいきますが、私はここで他のアイデアのいくつかが好きです。