SSH-Konfiguration: Überschreiben Sie den Standardbenutzernamen

271

Ist es möglich zu konfigurieren, um sshzu wissen, wie mein Benutzername lauten soll?

Standardmäßig wird der aktuelle Benutzername verwendet, was in meinem Fall nicht korrekt ist.

Ich bin auf einem Leih-Laptop und mein Benutzername ist loaner, aber ich möchte sagen, sshdass mein Benutzername ist buck.

Bonuspunkte: Mein Benutzername zu Hause ist bgolemon. Wenn ich den Benutzernamen pro Host konfigurieren könnte, wäre das sogar noch besser.

Bukzor
quelle
3
Stack Overflow ist eine Site für Programmier- und Entwicklungsfragen. Diese Frage scheint nicht zum Thema zu gehören, da es nicht um Programmierung oder Entwicklung geht. Weitere Informationen zu den Themen finden Sie hier in der Hilfe. Vielleicht ist Super User oder Unix & Linux Stack Exchange ein besserer Ort, um zu fragen. Siehe auch Wo poste ich Fragen zu Dev Ops?
JWW
3
Das ist so eine gute Frage!
Nicolas S.Xu
Die hier akzeptierte Antwort ist von besserer Qualität als die von Superusern: Enthält die Verwendung globaler (Standard-) Benutzerrichtlinien und hinzugefügte Kommentare machen die Prioritäten der Richtlinien klar
Rondo

Antworten:

449

Erstellen Sie eine Datei mit dem Namen configinside ~/.ssh. Innerhalb der Datei können Sie hinzufügen:

Host *
    User buck

Oder hinzufügen

Host example
    HostName example.net
    User buck

Das zweite Beispiel legt einen Benutzernamen fest und ist hostnamenspezifisch, während das erste Beispiel nur einen Benutzernamen festlegt. Und wenn Sie den zweiten verwenden, müssen Sie ihn nicht verwenden ssh example.net. ssh examplewird genug sein.

Learath2
quelle
134
Es ist wahrscheinlich erwähnenswert, dass laut man ssh_config: Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.Also sollte der Host *Abschnitt wahrscheinlich am Ende gehen.
Quodlibetor
9
Es ist erwähnenswert, dass die Konfigurationsdatei von oben nach unten verarbeitet wird, wobei jedes Feld (Benutzer, Hostname ...) ausgefüllt und wiederholte Felder übersprungen werden, wenn mehrere Hostanweisungen übereinstimmen. Wenn Sie definieren Host *, User jdoean der Spitze, und dann definieren Host example, HostName abc.example.com, User rootund versucht , ssh examplewird die gleiche sein , wie wenn Sie eingegeben haben ssh [email protected]. Um ssh-Standardeinstellungen (dh User root) zu definieren , Host *muss sich die Direktive am Ende der Konfigurationsdatei befinden.
mr.b
17
Vergessen Sie auch nicht chmod 600 auf .ssh / config
Sven
Beachten Sie, dass Sie bei mehreren Hostnamen, auf die der Server zugreifen kann (oder wenn Sie denselben Standardbenutzernamen für mehrere Server möchten), die erste Zeile in ändern und die Zeile Host server1.local example.net *.example.orgeinfach entfernen sollten HostName.
Lèse Majesté
44

Wenn Sie nur einige Male ssh möchten , z. B. auf einem geliehenen oder freigegebenen Computer, versuchen Sie Folgendes:

ssh buck@hostname

oder

ssh -l buck hostname
gpojd
quelle
1
Danke, aber damit bin ich schon vertraut. Es erscheint überflüssig, buck @ host anzugeben, wenn es immer buck @ host ist. Ich versuche eine Methode zu finden, um diese Informationen in einer Konfigurationsdatei darzustellen.
Bukzor
1
Haben Sie etwas so Einfaches wie den Alias ​​sshhostname = 'ssh buck @ hostname' in Betracht gezogen?
Gpojd
Ja, habe ich. Die Antwort von Learath2 ist genau das, wonach ich gesucht habe. Ich kann dies in mein Dotfiles-Repository einchecken und mache mir nie wieder Sorgen darüber.
Bukzor
Ich habe den Alias ​​root genommen, weil ich eine Verbindung zu Computern für verschiedene Clients herstelle, wobei mein Benutzername in jeder Clientumgebung unterschiedlich ist. Ein anderer Ansatz wäre vermutlich, verschiedene lokale Shell-Umgebungen zu haben, um die SSH- und zugehörigen Einstellungen für jeden Client festzulegen. Oder eine VM pro Client.
Nick Spacek
6

man ssh_config sagt

Benutzer

Gibt den Benutzer an, unter dem Sie sich anmelden möchten. Dies kann nützlich sein, wenn auf verschiedenen Computern ein anderer Benutzername verwendet wird. Dies erspart die Mühe, sich daran erinnern zu müssen, den Benutzernamen in der Befehlszeile anzugeben.

nes1983
quelle
1
"Identität" entspricht in diesem Fall der üblichen Verwendung von "Passwort". Dies sind die Daten, die Sie authentifizieren, aber nicht dazu beitragen, anzugeben, als wen Sie sich authentifizieren möchten .
Bukzor
Hoppla. Dort gibt es auch eine Benutzereinstellung.
nes1983
0

Sie können eine Verknüpfung verwenden. Erstellen Sie eine .bashrc-Datei in Ihrem Home-Verzeichnis. Dort können Sie Folgendes hinzufügen:

alias sshb="ssh buck@host"

Um den Alias ​​in Ihrem Terminal verfügbar zu machen, können Sie Ihr Terminal entweder schließen und öffnen oder ausführen

source ~/.bashrc

Dann können Sie eine Verbindung herstellen, indem Sie einfach Folgendes eingeben:

sshb
Frank Forte
quelle
1
Dies ist großartig für einen bestimmten Host, aber da ich immer wieder eine Verbindung zu einer Billion verschiedener Server herstelle, ist dies ziemlich nutzlos. Richten Sie lieber .ssh/configmit den entsprechenden Einstellungen ein. Ich suchte nach der *Wildpflege (und erfuhr, dass sie ganz unten sein sollte).
Mazunki
0

Es gibt ein Ruby-Juwel, das mit Ihrer sshKonfigurationsdatei verbunden ist und aufgerufen wird sshez.

Alles, was Sie tun müssen, ist sshez <alias> [email protected] -p <port-number>, und dann können Sie mit verbinden ssh <alias>. Dies ist auch nützlich, da Sie Ihre Aliase mit auflisten sshez listund mit einfach entfernen können sshez remove alias.

Oss
quelle