Linux で ssh 接続時の環境変数をユーザ個別に指定したい

ssh 接続でコマンドを投げ込みたいときに、sshd が応答する時点で有効になっていて欲しい環境変数がある。

シェルスクリプトを呼び出して、シェルスクリプト内で環境変数を設定しまくれば良いじゃないか、という意見もありますが、そのシェルスクリプトを呼び出す前に有効になっていて欲しい環境変数があったわけですよ。

具体的には、OS ユーザがたくさんあるうちの user01 さんだけ、 LANG=JA_JP が有効な状態で sshd に返事をして欲しかった。

その設定方法。

sshd 側での設定。まず、 sshd_config にて以下パラメータを設定し sshd 再起動。

 

PermitUserEnvironment yes

 

user01 さんのホームディレクトリ内に目的の環境変数を設定。

ファイル ~user01/.ssh/environment を用意して中身は

 

LANG=JA_JP

 

これで外から ssh 接続したとき、指定した環境変数が有効になった状態で接続できる。

※なんでこんなことしてるの

OS のベースの文字コードSJIS で、そこから起動する sshdSJIS で応答するので、UTF-8 文字列を送りつけるときに困る。たいへん困る。なんてことがありました。