SSH ルールの .profile を変更する

SSH ルールの .profile を変更する

各 SSH セッションが直接その場所に移動するように、.profile に次のスクリプトを作成したいと思います。

  1. 指定されたホスト (user@host) を確認します。
  2. ホスト = host1 の場合 -- cd /var/www/site1

ヘルプ! :)

答え1

SSH はホスト名をサーバーに送信しない (IP アドレスの検索やキーの確認などにローカルで使用するだけ) ことはほぼ確実です。少なくとも、シェル スクリプトで使用できる方法ではありません。

出力を参照してくださいenv- ssh コマンドで使用された名前に関係なく、唯一のホスト名は正規のホスト名です。

一部のSSHクライアントと一部のSSHサーバーでは、クライアントが1つ以上の環境変数の値を指定できるため、これを使用してサーバーにどのディレクトリに切り替えるかを指示することができます。たとえば、Puttyを参照してください。構成、接続、データまたはOpenSSH送信Envオプション。

それ以外の場合は、異なるドメイン名を持つ各 Web サイトごとに 1 つのユーザー ID を持つか、ユーザーにメニューを提供する必要があります。

答え2

質問が明確ではありません。複数のエイリアスを介して同じホストにアクセスしていますか? を共有する異なるホストにアクセスしていますか.profile? ソース ホスト名またはターゲット ホスト名に基づいてコマンドを実行しようとしていますか?

異なるリモート ホストに異なる効果を持たせたい場合は、リモート ホスト名をテストするだけです。

case "$(hostname)" in
  host1) cd /var/www/site1;;
esac

同じホストで異なる効果が必要な場合はSendEnv~/.ssh/config環境変数を送信するには(オープンSSHクライアント)。これらを有効にするには、AcceptEnvサーバー側ではディレクティブは不要ですが、多くの場合はそうではありません。ただし、LC_*変数は通常は許可されるため、これらを使用して情報を渡すことができます。クライアント側では、 を実行しますLC_VIRTUAL_HOST=site1 ssh common-host.provider.com.profileサーバーでは、 で次のように記述します。

case "$LC_VIRTUAL_HOST" in
  host1) cd /var/www/site1;;
esac

関連情報