web-dev-qa-db-ja.com

特定のSSHホストの変数を設定する

ssh_configでは、SendEnvを使用して一部の環境変数をホストにエクスポートすることを選択できます。

ホストごとに、この変数に特定の値を強制する方法もありますか?たとえば、ホスト$FOOに接続している場合にのみ、変数example.comを値barでエクスポートできますか?

17
ℝaphink

ssh_configの環境変数に特定のvalueを指定することはできませんが、既存の環境変数を特定のホストにのみ送信することは確実にできます。

Host example.com
    SendEnv FOO

チェーンを完了するには:

FOO=bar ssh [email protected]

最後に、リモートサーバーのsshd_configAcceptEnvにリストされている環境変数が必要です。

AcceptEnv FOO
17
Michael Hampton

~/.ssh/configSetEnvを使用して特定の値を指定できます。

Host *
  SetEnv FOO=bar

man ssh_configに従って:

サーバーに送信する1つ以上の環境変数とその内容を直接指定します。 SendEnvと同様に、サーバーは環境変数を受け入れる準備をする必要があります。

サーバーの/etc/ssh/sshd_configに次の行があると仮定します。

AcceptEnv LANG LC_* FOO

また、man ssh_configおよびman sshd_configも確認してください。

5
kenorb

.ssh/configファイルを使用して、ホスト構成値ごとに設定できます。例えば:

Host example.com
SendEnv FOO

サーバーもそれをサポートする必要があることに注意してください。

1
user156525

別のアイデアは、sshコマンドで環境変数を設定し、インタラクティブなシェルを実行することです。 env-var 'MANWIDTH'を使用してインタラクティブシェルを起動しようとしています。

ssh example.com 'MANWIDTH=120 bash -li'
1
huch