SSH接続に環境変数を渡す

SSH接続に環境変数を渡す

SSH接続に環境変数を渡したいです。動的に渡す必要があるため、sshの設定ファイルにハードコードすることは機能しません。

私はこれを試しました:

   AAA="tatata" ssh my_user@my_server.com
   echo $AAA
   ====> (empty)

どうすればいいですか?

ベストアンサー1

sshは(+と多くの基本設定TERMを介してのみ環境変数を渡します。LANGLC_*^1)。環境変数を許可するようにサーバー構成を変更すると、重大な結果が生じる可能性があります(ユーザーはログインシェルなどをバイパスする可能性がありますForceCommand)。あなたはこれをしないでください。

「リモートコマンド」パラメータの一部として右側に設定してSSH経由で渡すのではなく、明示的に対話型ログインシェルを起動できます。

ssh -t user@host AAA=tatata bash -l

この-tオプションを使用すると、sshリモートコマンドを指定したときにデフォルトで実行されない擬似端末を割り当てることができます。 bashのオプション-lはログインシェルを実行することです。つまり、sourceを使用し、~/.bash_loginsshにリモートコマンド引数が指定されていない場合の実行方法をできるだけ近づけることです。

環境変数の値はローカル側とリモート側で2回拡張されるため二重引用符彼らはこれがすぐに迷惑になることができます:

ssh -t user@host PRICE=\\\$19 bash -l

ただし、設定でLC_*環境変数を渡すことができる場合は、変数名を次のように指定できます;-)

LC_AAA=tatata ssh user@host

またはSSHなら顧客LC_*設定は次の項目には含まれませんSendEnv

LC_AAA=tatata ssh -o SendEnv=LC_AAA user@host

^1SSHを介して追加の環境変数を渡すには、AcceptEnvサーバーとSendEnvクライアントの両方に必要です。ssh*_configシステムのデフォルト値が何であるかを確認するには、次のディレクティブを参照してください。

おすすめ記事