管理作業中にいくつかのリモートSSHサーバーにログインする必要があります。私はクライアント側で3つの異なるコンピューターを使用しています。それらはすべてDebian GNU/Linuxシステムです。私は自分の仕事に必要なすべてのものを置くワークスペースディレクトリを保持しています。そのディレクトリには、特にbashrc
ファイルと_ssh_config
_ファイルが含まれています。
別のクライアントを移動して使い始めるときに、あるクライアントコンピューターから他のクライアントコンピューターにrsync
を使用するスクリプトを使用して、そのディレクトリの内容を手動で同期します。
3つのクライアントそれぞれのローカルユーザーには最小限の構成が必要なため、新しいローカルユーザーを作成するか、クライアントを再インストールする必要がある場合は、ワークスペースをrsync
し、カスタムへの参照を追加するだけでよい_workspace/bashrc
_は実際のユーザーの_$HOME/.bashrc
_にあります。私のカスタム_workspace/bashrc
_はいくつかのエイリアスを作成し、使用しているクライアントに関係なく通常の環境を取得します。
私のカスタム_workspace/bashrc
_は、次の方法でリモートサーバーに接続するためのエイリアスを作成します。
_alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com'
_
クライアントのターミナルで_s1
_と入力するだけでserver1にログインします。これは、カスタム_ssh_config
_が必要な公開鍵認証オプションを設定し、正しいポートserver1がリッスンし、正しいユーザーを使用するためです。
ssh
コマンドが必要な場合、これは魅力のように機能します。残念ながら、ssh
を使用する別のコマンドが必要になるとすぐに、事態はさらに混乱します。
例えば。これらのサーバーの1つに何でもrsync
する必要がある場合は、sshコマンド全体を記述する必要があります。
_rsync -Pavz --delete -e "ssh -F $HOME/workspace/etc/ssh_config" ...
_
scp
、_ssh-copy-id
_などの他のコマンドでも同様のことが起こります。
書けるようになりたい
_rsync -Pavz --delete -e "ssh" ...
_
代わりに、sshに環境変数から構成ファイル名を取得させることで、bashrc
にその環境変数を設定でき、すべてのssh
呼び出しが自動的に機能します。
そのような環境変数はありますか、それとも問題に対する別の解決策がありますか?
これは、概念全体を少し誤用し、ツールを特定の使用例に合わせたものです。本来のツールを使用する必要があります。設定ファイルはデフォルトで~/.ssh/config
にあります。
そこからすべての3つのコンピューターで~/workspace/etc/ssh_config
へのシンボリックリンクを作成して、すべてを回避せずにそのまま使用できるようにしてみませんか?
OpenSSH 7.3以降では、Include
ディレクティブを使用してシンボリックリンクなしで同じことを実現できます(必要に応じて、一部のホストで異なる構成にすることもできます)。
同じトリックは、/etc/ssh/ssh_config
のシステム全体の構成でも実行できます。
あなたはすでに持っているので...カスタムbashrcへの参照を追加...workspace
のいくつかのスクリプトで.ssh/config
の変更もまとめることができます。