Lösung 1:
Angenommen, Sie haben UsePAM yes
in /etc/ssh/sshd_config
, und vorausgesetzt, Sie möchten, dass diese Umgebungsvariablen für jeden Benutzer festgelegt werden, können Sie pam Umgebungsvariablen für Sie festlegen lassen. Wenn Sie die Umgebungsvariablen in /etc/gitenv
definiert haben Sie könnten diese Zeile zu /etc/pam.d/sshd
hinzufügen
auth required pam_env.so envfile=/etc/gitenv
Oder wenn Sie diese Datei untersuchen, stellen Sie möglicherweise fest, dass bereits eine pam_env.so verwendet wird und bereits eine Datei, der Sie etwas hinzufügen können. Seien Sie nur vorsichtig und stellen Sie sicher, dass Sie Ihre Änderungen gründlich getestet haben, bevor Sie Ihre SSH-Sitzung beenden, denn wenn Sie mit pam herumspielen, können Sie Ihre Fähigkeit, sich bei Ihrem Server anzumelden, vollständig beeinträchtigen, wenn Sie nicht aufpassen.
Lösung 2:
Ich setze eine Umgebungsvariable für meine SSH-Verbindungen mit ~/.ssh/environment
. Die Datei kann Variablen der Form VAR=value
enthalten , keine Notwendigkeit, sie explizit zu exportieren.
Diese Benutzerkonfigurationsdatei wird jedoch standardmäßig vom SSH-Serverprozess ignoriert, es sei denn, die Option PermitUserEnvironment ist auf yes gesetzt. Daher müssen Sie sicherstellen, dass /etc/sshd_config auf dem SSH-Server bearbeitet wird, um diesen Parameter hinzuzufügen oder zu aktualisieren:
PermitUserEnvironment yes
Sie müssen die SSH-Serverkonfiguration neu laden. Unter RHEL oder Suse Linux tun Sie dies (als root)
/sbin/service sshd reload
(Möglicherweise sshd durch ssh ersetzen, wenn es nicht funktioniert)
Unter Ubuntu (mit Upstart) tun Sie das
sudo reload ssh
Unter jedem anderen Linux könnten Sie es (als root) versuchen
/etc/init.d/sshd reload
(Ersetzen Sie sshd durch ssh oder openssh oder was auch immer dem Init-Skript des SSH-Servers entsprechen würde)
Lösung 3:
Ich habe keinen Godaddy-Shared-Host mehr, daher kann ich nicht prüfen, ob die vorgeschlagenen Lösungen gültig sind. Dies wird die akzeptierte Antwort bleiben, da es von mir funktioniert hat, als ich die Frage gestellt habe. Die anderen Antworten könnten auch funktionieren. Das lasse ich die Community mit Upvotes entscheiden.
OK. Die Lösung ist, dass es auf einem Godaddy Shared Host keine Lösung gibt. Ich habe alles versucht, aber nichts funktioniert, also habe ich mich entschieden, bei ~/.ssh/authorized_keys:
zu bleibencommand="~/connect.sh" ssh-rsa AAAAB3NzaC...
In der ~/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;
Und im ~/.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
Also muss ich den Befehl ="..." auf jeden RSA-Schlüssel in den "authorized_keys" kopieren. Dies ist Code-Duplizierung, aber ich glaube nicht, dass es eine andere Lösung auf einem Godaddy-Shared-Host gibt.