SSH経由で複数のホストに接続する際の生産性の向上

SSH経由で複数のホストに接続する際の生産性の向上

私は運営しており、何百台ものサーバーに効率的にログインできる必要があります。効率的であるということは、誰かが私にホストのリストを見るように頼んだときから実際にホストに到達するまでの時間を最小限に抑える必要があるということです。今、私のメモを見て、ホスト名を見つけて自分のユーザー名の前に追加し、ホストのリストをテキストエディタに入れてから、コマンドを端末に貼り付ける必要があります。

理想的には、ホストのリストをフィルタリングし、必要なリストを見つけるのに役立つ端末から呼び出すことができるいくつかの機能を作成し、ユーザー名を追加してSSH(またはcsshx)注文する。私は次のテキストファイルを持つことを考えました。

description           hostname          user
.........             .........         ...

cat必要なホストを見つけて前面に接続し、user@コマンドを生成します。より良い方法があると思い、それについてのすべての人の考えを聞きたいです。

時間をいただきありがとうございます!

答え1

気になるかもしれませんが、必要なすべての説明名に対して〜/.ssh/configにエントリを追加してから、ssh <name>正しいユーザー/ホストなどを自動的に適用できます。私の設定の例は次のとおりです。

host abc
   hostname 1.2.3.4
   User root
   LocalForward 5951:192.168.1.1:5901

   ProxyCommand ssh 1.2.3.4 nc 192.168.1.1 22

だから、ただ入力すると、ssh abc1.2.3.4にrootとしてログインし、いくつかのポート転送を設定し、SSHトンネルを別のホストに接続します。

答え2

エイリアスを使用すると、簡単なコマンドを入力して他のサーバーにアクセスできます。そのため、長いコマンドを入力する必要なく、エイリアスのみを入力します。今、ますます多くのサーバーを追加し始めると、server1のエイリアスは「one」で、server97のエイリアスは「fred」であることを覚えにくくなります。したがって、最初のエイリアスのアイデアは、私がほとんどのサーバーを訪問しているサーバーにのみ適用されます。

他の場合は、呼び出し時に接続するサーバーのリストが表示されるように関数(別名でもあります)を作成します。私が入力した番号に基づいてエイリアスを実行してそのサーバーに接続しました。

エイリアスをファイルに保存し.bash_aliases(もちろん、定義の場所/方法によってOSによって異なります)、ファイルに私の機能を保存し.bash_functionsます.bashrcbashrc

たとえば、エイリアスファイルには次のエントリを含めることができます。

alias serv1='ssh [email protected]'<br>
alias serv2='ssh [email protected]'<br>
alias start='serverconnect'

その後、次のような機能があります。

function serverconnect
{
    echo "Select server you would like to connect to:"
    echo " 1 - Server1"
    echo " 2 - Server2"

    read choice

    case $choice in
    1)
      serv1
    ;;
    2)
      serv2
    ;;

    *)
      echo "Invalid choice"
    esac
}

したがって、server1に接続するには「serv1」と入力し、サーバーリストに接続するには「start」と入力します。サーバーのリストが増えるにつれて、すべてのサーバーを1つのリストに表示したり(画面上でスクロールしたり)、さらに細分化したい場合は難しい場合があります。実際、すべてはあなたのプロセスに適したものに依存します。

更新:エイリアスと関数ファイルを呼び出す方法が必要な場合があります。私は.bashrc次の構文を使用します。

if [ -f "${HOME}/.bash_aliases" ]; then
  source "${HOME}/.bash_aliases"
fi

関連情報