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

Ändern Sie das Standardverzeichnis, wenn ich SSH zum Server verwende

Lösung 1:

Es gibt zwei Möglichkeiten, dies zu erreichen:

  • Ändern Sie Ihr Heimatverzeichnis auf dem Server in /var/www/websites (das ist nicht wirklich eine gute Idee)
  • fügen Sie cd /var/www/websites hinzu bis zum Ende Ihrer .bashrc . Ich verwende dieses für unsere Puppetmaster, da ich dort immer in /etc/puppet/environments/dkaarsemaker sein möchte, anstatt in meinem Homedir :-)

Lösung 2:

Wenn Sie Schlüssel für die SSH-Anmeldung verwenden, können Sie den Pfad ändern, indem Sie command= voranstellen bis vor eine Taste in ~/.ssh/authorized_keys auf Ihrer Fernbedienung Server. Beispiel:

command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key

Es ist in Ordnung, mehrere Schlüssel für denselben Benutzer zu generieren und zu verwenden. Ein Schlüssel auf dem Server kann den Befehl enthalten, der andere nicht – auf diese Weise wählen Sie das erwartete Verhalten zur Anmeldezeit aus. Sie können es einfach mit local abschließen ~/.ssh/config :

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key1>  #on the server key with "command"
    User webmaster

Host my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key2>  #on the server key without command
    User webmaster

Folgendes wird passieren:

local$ ssh websites-my-host
[email protected]:/var/www/websites$ _

oder:

local$ ssh my-host
[email protected]:~$ _

Lösung 3:

Openssh sshd akzeptiert standardmäßig diese Umgebungsvariablen vom Client:

AcceptEnv LANG LC_*

Sie können das verwenden, um einen Wert aus der lokalen Umgebung des Clients wie folgt an den Server zu senden:

LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH [email protected]

Sie können die Direktive SendEnv in ~/.ssh/config platzieren, sodass Sie sie nicht in die Befehlszeile einfügen müssen.

Wenn Sie Folgendes in Ihr ~/.profile einfügen (um nur interaktive Anmeldungen zu beeinflussen, verwenden Sie .profile, um alle Anmeldungen zu beeinflussen, verwenden Sie .bashrc):

if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
  cd "$LC_CDPATH";
fi

Dann wechselt es automatisch in das Verzeichnis, das in der Umgebungsvariable angegeben ist, wenn Sie sich anmelden, wenn es angegeben ist und es sich um ein Verzeichnis handelt.

Lösung 4:

Seit OpenSSH 7.6 können Sie die neue RemoteCommand-Option verwenden, um dies zu erreichen.

In Ihrem ~/.ssh/config :

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/keyfile
    User webmaster
    RequestTTY force # check if this is necessary
    RemoteCommand cd /var/www/websites && bash -l

Linux
  1. Wann verwendet man Nohup?

  2. So ändern Sie die Standard-PHP-Version in Plesk

  3. PuTTY:Standard-SSH-Anmeldeverzeichnis ändern

  4. Ändern Sie den Standard-DNS-Server in Arch Linux

  5. Sollte ich den Standard-SSH-Port auf Linux-Servern ändern?

Ubuntu 20.04 SSH-Server

Cd-Befehl in Linux (Verzeichnis wechseln)

SSH-Server

So ändern Sie den Standard-SSH-Port in Linux [richtig und sicher]

Wie ändere ich das Stammverzeichnis eines Apache-Servers?

Wie starte ich in Bash, wenn ich in meinen Server ssh'e?