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.

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.


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

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.


1

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

if [ "$SSH_TTY" != "" ]; then su -; logout; fi

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.