web-dev-qa-db-ja.com

ssh構成ファイル環境変数?

管理作業中にいくつかのリモート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呼び出しが自動的に機能します。

そのような環境変数はありますか、それとも問題に対する別の解決策がありますか?

4
Lucio Crusca

これは、概念全体を少し誤用し、ツールを特定の使用例に合わせたものです。本来のツールを使用する必要があります。設定ファイルはデフォルトで~/.ssh/configにあります。

  • そこからすべての3つのコンピューターで~/workspace/etc/ssh_configへのシンボリックリンクを作成して、すべてを回避せずにそのまま使用できるようにしてみませんか?

  • OpenSSH 7.3以降では、Includeディレクティブを使用してシンボリックリンクなしで同じことを実現できます(必要に応じて、一部のホストで異なる構成にすることもできます)。

  • 同じトリックは、/etc/ssh/ssh_configのシステム全体の構成でも実行できます。

あなたはすでに持っているので...カスタムbashrcへの参照を追加...workspaceのいくつかのスクリプトで.ssh/configの変更もまとめることができます。

6
Jakuje