SSH - So fügen Sie den Befehl "-t" in die Datei "~ / .ssh / config" ein

13

Ich verwende die ~/.ssh/configDatei, damit ich sie leicht eingeben kann, ssh myserverund sie gibt den richtigen Benutzernamen, Port, Hostnamen, Identitätsdatei usw. an.

Bei vielen Servern melde ich mich jedoch zuerst su -als root an. Ich kann wie so in einem Befehl auf der Kommandozeile das alles tun: ssh myserver -t su -. Kann ich meiner ~/.ssh/configDatei etwas hinzufügen, das das für mich erledigt? Ich möchte in der Lage sein, ssh myserver-rootund es wird das Gleiche tun wie ssh myserver -t su -?

Ich weiß PermitRootLogin, das ist für diesen Server ausgeschaltet, und ich zögere, das einzuschalten. Ich würde viel lieber sehen, ob es eine Möglichkeit gibt, dies mit ssh auf der Clientseite zu tun.

Rory
quelle

Antworten:

10

Ich denke, ich würde dies aus der anderen Richtung angehen - verwenden Sie 'command =' für den öffentlichen Schlüsseleintrag in Ihrer ~ / .ssh / authorized_keys-Datei auf dem Remote-Server, um Ihren Befehl "su -" auszuführen.

Verwenden Sie dann einfach / reference den privaten Schlüssel in Ihrer ~ / .ssh / config-Datei (IdentityFile-Option) für jeden Host / Alias ​​("myserver-root"), den Sie auf diese Weise bearbeiten möchten.

Die in authorized_keys (5) verfügbaren Optionen sind in sshd (8) dokumentiert.

jrg
quelle
Ja das macht genau das was ich will. :) Ich habe die volle Kontrolle über die Datei ~ / .ssh / authorized_key auf dem Server und habe kein Problem damit, das zu ändern.
Rory,
3

Warum nicht ein Skript zu einem Verzeichnis in Ihrem Pfad (oder einem Alias ​​dafür) mit dem Namen rssh hinzufügen?

#!/bin/bash
ssh $1 -t 'su -'

Dann ist es nur:

rssh myServer
Kyle Brandt
quelle
1

Ich habe in der OpenSSH-Quelle keine Konfigurationsoption für die Pseudotty-Zuweisung gefunden.

Aber ich kann einen Tipp bezüglich PermitRootLogin geben. Setzen Sie ihn auf:

PermitRootLogin without-password

Und erlauben Sie nur root-Logins mit ssh-Schlüsseln.

rkthkr
quelle
1

Wie wäre es, wenn Sie so etwas in ~ / .bashrc auf der Serverseite hinzufügen?

if [ "$SSH_TTY" != "" ]; then su -; logout; fi
Shawn Chin
quelle
1

Die beste Antwort ist wahrscheinlich eine Kombination aus rkthkr und jrg . Verwenden Sie PermitRootLogindiese Option, um einen Schlüssel anzufordern, und geben Sie den Schlüssel mit dem commandSchlüsselwort nur in die Datei authorized_keys von root ein.

Mauern
quelle