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)に適用できるはずです。