it-swarm.com.de

Hinzufügen eines Passworts zu .ssh / config

Ich benutze Ubuntu 12.04. Ich verwende ssh, um täglich eine Verbindung zu vielen Servern herzustellen, daher füge ich deren Parameter in die Datei . Ssh/config ein. so was :

Host server1
User Tux
Port 2202
HostName xxx.x.xx.x

Gibt es eine Möglichkeit, Kennwörter für jede Verbindung in diese Datei einzufügen? Wenn der Server nach einem Passwort fragt, gibt das Terminal seinen Pass ein und sendet ihn an den Server, sodass ich das Passwort nicht jedes Mal eingeben muss. Außerdem möchte ich kein öffentliches/privates Schlüsselpaar verwenden.

30
Ajo Augustine

Nein, es gibt keine Methode, um das Kennwort für die SSH-Authentifizierung mithilfe eines integrierten OpenSh-Mechanismus nicht interaktiv in der Befehlszeile anzugeben oder bereitzustellen. Zumindest nicht einer, von dem ich weiß. Sie könnten Ihr Passwort fest in das erwartete Skript codieren, aber es ist auch keine gute Lösung.

Sie möchten auf jeden Fall Schlüsselpaare für die kennwortlose Authentifizierung verwenden, wie Michael sagte. Am Ende ist der private Schlüssel so ziemlich ein großes Kennwort in der Datei.

32
Danila Ladner

Um die Reihe von Kommentaren zu vermeiden: Ja, dies ist unsicher (nicht einmal wohl unsicher). Ich würde Ihnen dringend empfehlen, dies nur in einer Laborsituation in einem isolierten Netzwerk oder in einer ähnlichen Situation zu tun, in der keine Produktionsserver oder potenziell Produktionsserver ohne vollständigen Reset/Format beteiligt sind.

Ich wollte dies einrichten, da ich nicht glaube, dass mein 2950-Switch private/öffentliche Schlüssel unterstützt, und ich hoffe, dass ich irgendwann dieses Wissen erhalte, aber ich bin noch nicht da.

Mit einem Alias ​​und einem sshpass kann dies erreicht werden.

  1. Installieren Sie sshpass
  2. Ändern Sie Ihre . Ssh/config Datei so, dass sie den in der Frage aufgeführten Benutzernamen enthält
  3. Fügen Sie Ihrem Terminal einen Alias ​​hinzu (ich habe .bashrc verwendet und würde empfehlen, keine gloabl-Einstellungen vorzunehmen).
  4. Verwenden Sie einen Alias, um sich beim Ziel anzumelden

Mein Beispielalias lautet:

alias ssc='sshpass -pcisco ssh'

Wobei "Cisco" das Passwort ist. Beachten Sie, dass zwischen -p und dem Kennwort kein Leerzeichen steht.

Verwendung ist (unter Bezugnahme auf die Frage):

ssc server1

Hinweis: Dies beantwortet die Frage im Titel nur für Benutzer von Suchmaschinen. Wenn Sie Server wie das Fragenbeispiel verwenden, sollten private/öffentliche Schlüsselpaare und nicht diese Antwort verwendet werden

23
DarkSheep

Ja, wie oben erwähnt, gibt es keine Möglichkeit, das Passwort einfach zu speichern. Ich würde empfehlen, den SSH-Schlüssel für die Autorisierung zu verwenden.

generieren Sie zunächst Ihren Schlüssel:

ssh-keygen

Kopieren Sie dann den Schlüssel auf Ihre Server/Desktops:

ssh-copy-id -i .ssh/id_rsa.pub [email protected]:

Das ist alles. Sie werden nie wieder nach dem Passwort gefragt.

Ich empfehle auch, die Passwortautorisierung im Allgemeinen zu entfernen, aber das liegt bei Ihnen.

14
Str82DHeaD

Es gibt keine Möglichkeit, dies mit ssh zu tun, es ist so unsicher wie es nur geht.

Wie Danila erwähnte, könnten Sie Expect-Skripte verwenden, aber ich würde mich nicht darum kümmern.

Ich frage mich, was Sie erreichen wollen. Möchten Sie von einem Server zum anderen springen? In diesem Fall möchten Sie ssh-agent auf Ihrer Workstation einrichten und verwenden und die Agentenweiterleitung auf den Zielhosts aktivieren. Auf diese Weise wird der Austausch von Anmeldeinformationen an Ihren lokalen Agenten weitergeleitet, ohne dass Sie Ihren privaten Schlüssel kopieren müssen.

4
Eddy

Ich benutze dieses Skript aus dem Verzeichnis ~/.local/bin

#!/usr/bin/bash

ORIG_SSH=/usr/bin/ssh
Host=$1

SSHPASS=$(grep -Pzo "Host $Host"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
    export SSHPASS
    sshpass -e $ORIG_SSH [email protected]
else
    $ORIG_SSH [email protected]
fi

Dadurch kann ich die Passphrase als #PS <password> In der Datei .ssh/config Angeben.

Aber wie jeder sagt, ist es besser, ssh-keys Mit ssh-agent Zu verwenden, wenn es möglich ist

2
mnach

Der richtige Weg, um mit dieser Situation umzugehen, ist die Verwendung eines sitzungsbasierten ssh-Agenten. Hier ist, wie:

$ eval `ssh-agent`
$ ssh-add /home/user/.ssh/your_key
Enter passphrase for /home/user/.ssh/your_key:

Das Passwort bleibt dann für den Rest der Sitzung gültig. Sie müssen den ersten Befehl nur einmal ausführen und können danach so viele Schlüssel hinzufügen, wie Sie möchten. Wenn die Sitzung beendet wird, gilt dies auch für den Agenten, sodass kein fest codiertes Kennwort gespeichert wird.

Schockiert, dass diese Antwort nach so langer Zeit nicht mehr da war!

0
pranalli