解決策 1:
UsePAM yes
があるとします。 /etc/ssh/sshd_config
で 、およびこれらの環境変数をすべてのユーザーに設定する必要があると仮定すると、pam に環境変数を設定させることができます。 /etc/gitenv
で環境変数が定義されている場合 この行を /etc/pam.d/sshd
に追加できます
auth required pam_env.so envfile=/etc/gitenv
または、このファイルを調べると、pam_env.so が既に使用されており、追加できるファイルが既に存在することがわかる場合があります。 ssh セッションを終了する前に、変更内容を十分にテストしてください。注意を怠ると、pam をいじっていると、サーバーにログインする能力が完全に失われる可能性があります。
解決策 2:
~/.ssh/environment
を使用して SSH 接続用の環境変数を設定しています .ファイルには VAR=value
の形式で変数を含めることができます 、明示的にエクスポートする必要はありません。
ただし、このユーザー構成ファイルは、オプション PermitUserEnvironment が yes に設定されていない限り、SSH サーバー プロセスによってデフォルトで無視されます。したがって、SSH サーバーの /etc/sshd_config を編集して、このパラメータを追加または更新する必要があります:
PermitUserEnvironment yes
SSH サーバー構成をリロードする必要があります。 RHEL または Suse Linux では (root として)
/sbin/service sshd reload
(うまくいかない場合は、sshd を ssh に置き換えてください)
Ubuntu では (upstart を使用して)
sudo reload ssh
他の Linux では、(root として) 試すことができます
/etc/init.d/sshd reload
(sshd を ssh または openssh など、SSH サーバーの初期化スクリプトに対応するものに置き換えます)
解決策 3:
godaddy 共有ホストがなくなったため、提案されたソリューションが有効かどうかを確認できません。私が質問したときにうまくいったので、これは受け入れられた答えのままです。他の答えも同様に機能する可能性があります。賛成票を投じてコミュニティに決定してもらいます。
Ok。解決策は、godaddy 共有ホストに解決策がないことです。私はすべてを試しましたが、何もうまくいかなかったので、~/.ssh/authorized_keys:
を使用することにしました。command="~/connect.sh" ssh-rsa AAAAB3NzaC...
~/connect.sh:
#!/bin/bash
if [ -f "${HOME}/.env_profile" ]; then
source ~/.env_profile
fi;
if [ "x${SSH_ORIGINAL_COMMAND}x" == "xx" ]; then
$SHELL --login
else
eval "${SSH_ORIGINAL_COMMAND}"
fi;
~/.env_profile:
export PATH=$PATH:$HOME/bin:$HOME/git/libexec/git-core
export LD_LIBRARY_PATH=$HOME/git/lib
export GIT_EXEC_PATH=~/git/libexec/git-core
export GIT_TEMPLATE_DIR=~/git/share/git-core/templates
したがって、command="..." を、authorized_keys 内のすべての RSA キーにコピーする必要があります。これはコードの重複ですが、ひどい共有ホストには別の解決策があるとは思いません.