Řešení 1:
Za předpokladu, že máte UsePAM yes
v /etc/ssh/sshd_config
a za předpokladu, že chcete tyto proměnné prostředí nastavit pro každého uživatele, můžete si nechat nastavit proměnné prostředí pam. Pokud máte proměnné prostředí definované v /etc/gitenv
můžete přidat tento řádek do /etc/pam.d/sshd
auth required pam_env.so envfile=/etc/gitenv
Nebo kontrolou tohoto souboru můžete zjistit, že se již používá pam_env.so a že již existuje soubor, do kterého můžete přidávat věci. Buďte opatrní a ujistěte se, že jste před ukončením ssh relace důkladně otestovali své změny, protože když si budete zahrávat s pam, můžete si úplně zlomit schopnost přihlásit se k vašemu serveru, pokud nebudete opatrní.
Řešení 2:
Nastavuji nějakou proměnnou prostředí pro svá připojení SSH pomocí ~/.ssh/environment
. Soubor může obsahovat proměnnou ve tvaru VAR=value
, není třeba je explicitně exportovat.
Tento uživatelský konfigurační soubor je však ve výchozím nastavení procesem serveru SSH ignorován, pokud není možnost PermitUserEnvironment nastavena na yes. Proto se musíte ujistit, že jste upravili /etc/sshd_config na serveru SSH, abyste přidali nebo aktualizovali tento parametr:
PermitUserEnvironment yes
Musíte znovu načíst konfiguraci serveru SSH. Na RHEL nebo Suse Linux to uděláte (jako root)
/sbin/service sshd reload
(Pokud to nefunguje, možná nahraďte sshd ssh)
Na Ubuntu (pomocí upstart) ano
sudo reload ssh
Na jakémkoli jiném Linuxu to můžete zkusit (jako root)
/etc/init.d/sshd reload
(Nahraďte sshd za ssh nebo openssh nebo cokoli, co by odpovídalo init skriptu serveru SSH)
Řešení 3:
Už nemám sdíleného hostitele, takže nemohu zkontrolovat, zda jsou navrhovaná řešení platná. To zůstane přijatou odpovědí, protože to fungovalo podle mě, když jsem položil otázku. Ostatní odpovědi by také mohly fungovat. Nechal jsem o tom rozhodnout komunitu pomocí hlasů pro.
OK. Řešením je, že na sdíleném hostiteli Godaddy neexistuje žádné řešení. Zkoušel jsem všechno, ale nic nefunguje, tak jsem se rozhodl, že zůstanu u ~/.ssh/authorized_keys:
command="~/connect.sh" ssh-rsa AAAAB3NzaC...
V souboru ~/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;
A v ~/.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
Takže musím zkopírovat příkaz="..." do každého klíče rsa v autorizovaných_klíčích. Toto je duplikace kódu, ale nemyslím si, že na bohulibých sdílených hostitelích existuje jiné řešení.