特定のSSHホストの変数の設定


17

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

ホストごとに、この変数に特定の値を強制する方法もありますか?たとえば、ホストに接続するときにのみ$FOO値を持つ変数をエクスポートすることは可能でしょうか?barexample.com


回答:


15

あなたは、特定の与えることができないで環境変数のをssh_config、しかし、あなたは確かにのみ、特定のホストに既存の環境変数を送信することができます。

Host example.com
    SendEnv FOO

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

FOO=bar ssh user@example.com

最後に、リモートサーバは、に記載されている環境変数持っている必要がありAcceptEnv、その中をsshd_config

AcceptEnv FOO

まさにあなたが避けたいものは何ですか?
マイケルハンプトン

1
特定の値を持つ変数を送信するためにエイリアスを記述する必要があります。
チャフィンク

申し訳ありませんが、他にできることはあまりありません...コンピュータに心を読み取らせることができる場合を除きます。:)
マイケルハンプトン

6
;-)私が気に入っているだろうことのようなものとなってしまうけれども、私の疑念を確認するためのおかげSetVar FOO='bar'ssh_config);
ℝaphink

2
私の場合、古いシステムはサポートしTERM=tmux-256colorていないので、リモートホストごとに(ワイルドカードを使用して)フォールバックを行いたいというケースが繰り返し発生します。
ジェド

4

で特定の値を指定できSetEnvます~/.ssh/config。たとえば、

Host *
  SetEnv FOO=bar

としてman ssh_config

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

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

AcceptEnv LANG LC_* FOO

次も確認してください:man ssh_configおよびman sshd_config


2
困惑した読者への注意(私のように、私が最初にこれを読んだとき):これは2018年8月にリリースされたOpenSSH 7.8以降の新機能であり、OSの更新を通じて一般ユーザーが利用できるようになるにはしばらく時間がかかります。(しかし、それが一般的になると、それは問題に対する断然最良の解決策になるでしょう)
Irfy

1

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

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

0

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

Host example.com
SendEnv FOO

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.