GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSH - Env-Vairables für jede Verbindung festlegen - Godaddy Shared Host

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 bleiben
command="~/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.


Linux
  1. So richten Sie SSH-Schlüssel ein

  2. Beschränken Sie die SSH-Anmeldung auf eine bestimmte IP oder einen bestimmten Host

  3. So richten Sie SSH-Schlüssel unter Debian ein

  4. ^M am Ende jeder Zeile in vim

  5. scp ssh:Verbindung zu Host 10.0.0.109 herstellen Port 22:Keine Verbindung zum Host verloren

Richten Sie unter Linux eine statische Netzwerkverbindung ein

So richten Sie eine passwortlose SSH-Anmeldung ein

So richten Sie SSH unter CentOS und RHEL ein

Verbindung zum Host localhost Port 22 herstellen:Verbindung abgelehnt

Wie beende ich eine SSH-Verbindung?

SSH:connect to host localhost port 22:Verbindung abgelehnt