SSHログインプロンプト後にファイルを取得する

SSHログインプロンプト後にファイルを取得する

1行の質問:バスチャンホスト経由でSSH経由でログインした後、リモートホストからリモートファイルを自動的にインポートするにはどうすればよいですか?

リモートホストにSSHで接続した後、リモートホストのエイリアス+シェルカスタム関数のリストを含むファイルをインポートする必要があります。

このファイルは、リモートシステムの/ tmpフォルダにあります(例:/ tmp / my-rc)。

私が見つけた他の投稿とインターネットを検索してみると

ssh -t [email protected] 'source /tmp/my-rc; bash -l'

問題は、端末を取得しましたが、新しいbashシェルであるため、エイリアスが設定されていないことです。

シェルを取り付けた後にソースを作成する必要があると考えて、以下の方法を試してみましたが、やはりありませんでした。エラーはありません。端末は表示されますが、ファイルにソースがないようです(/tmp/my-rcファイルからダミーメッセージをエコーし​​て確認されます)。

ssh -t [email protected] 'bash -l; source /tmp/my-rc'

ソースの代わりに「.」を試してみましたが、運がありませんでした。

どんな助けでも。

注1:BashまたはZSHのすべてのシェルソリューションが機能します。

注2:実際のsshはプロキシコマンドを介して行われます。つまり、要塞ホストをスキップすることです(関連がある場合にのみ言及)。

注3:rcまたはbashrc構成ファイルに対する権限、およびリモートホストのホームディレクトリに対する権限もありません。

注4:セキュアホストへのログインに使用した正確なコマンドは、以下のようにBaschenホストを介して行われました。

ssh -o ProxyCommand='ssh -W %h:%p ec2-3-218-12-120.compute-1.amazonaws.com' 10.0.31.122  

ベストアンサー1

を使用すると、bash次のことができます。

ssh -t user@host '
  PROMPT_COMMAND="source /tmp/my-rc
                  unset PROMPT_COMMAND
                 " exec bash --norc'

/tmp/my-rcその後、後で設定を解除するので、プロンプトの前にソースをインポートしてプロンプトのみをインポートしますPROMPT_COMMAND

実際に定義が完了したらunset PROMPT_COMMAND削除する必要があります。/tmp/my-rc

上記は、リモートユーザーのログインシェルがBourneに似ていると想定していますが、他のほとんどの種類のシェル(csh / rc / Fish)に適用できるはずです。

おすすめ記事