現在存在するフォルダに基づいてリモートホストに自動的にSSH接続

現在存在するフォルダに基づいてリモートホストに自動的にSSH接続

ローカルOSのフォルダに基づいてリモートでSSHを実行できるソリューション(またはzshプラグイン)はありますか? PyENVに似ています。

だからプロジェクトを開発して実行すると

cd /home/projects/ERP
ssh production
ssh development

そうすれば、覚えやすいコマンドを使用して目的のリモートホストに直接移動できますか?

ディレクトリを切り替えるときにエイリアスを作成してローカルフォルダからロードできることを知っていますが、より良い方法はありますか?

ありがとう、ドミトリー

答え1

明らかにコメントを求めるコメントを投稿するのに十分な評判がないので、ここでは推測にすぎず、不完全な場合は必要に応じて答えを編集してください。

私はそのようなプラグインを知りませんが、1つを書くことはそれほど難しくありません。あなたのユースケースは一般的ではないので、これは正しい選択かもしれません。これを行うには5つの方法があります。

/etc/ssh/ssh_configただし、まず、サーバーに「ホストエイリアス」を持つことが完全に可能であることに注意する必要があります~/.ssh/config。これにより、SSH構成オプションセットに特定のホストエイリアスを簡単に割り当てることができます。

以下は例です。

Host router
    Hostname 10.0.0.1
    Port 222
    User root

これにより、入力が入力ssh routerと同じになります。ssh [email protected] -p 222

これはおそらくほとんどのユースケースに対処します。すでにご存知の方は申し訳ありません。ここではすべての内容を扱いたかった。

固定SSHコマンドを異なる方法で解釈するためにSSHが本当に必要な場合は、入力パラメータを表示して主要なパラメータ(本番や開発など)を識別し、そのパラメータを解釈してからSSHコマンドのラッパーが必要になる可能性があります。の値に応じて、1つの可能なホスト(SSH設定で事前設定することができます)を選択します$PWD

これが役立つなら教えてください! ^.^


更新:指摘してくれた@fra-sanに感謝します。たくさんよりエレガントな選択! :D(少なくとも特別なケースが比較的少ない場合は、よりエレガントになります...)

単に次のことができます。

Match host production, exec ssh_match_dir
    Port 5555
    Hostname foodev.biz

ssh_match_dir次のように条件が適用されることを検出した場合、PATHのどのスクリプトがステータス0で終了しますか?

#!/usr/bin/env bash
if test "$PWD" = "/home/a/git"; then
    exit 0
else
    exit 1
fi

man ssh_config該当するTOKENSセクションを確認し、特別な注意を払ってください。これには、ssh追加の条件を追加するためにスクリプトに渡すように指示できるパラメーターに関する情報が含まれています。スクリプトにいくつかのパラメータ解析を使用して追加すると、ユースexec ssh_match_dir %hケースに応じて、1つのスクリプトが異なるランダム条件で各ホストを処理できるようになると思います。

関連情報