Frage ist es möglich, ssh in ubuntu server mit schlüssel und von einem anderen computer mit passwort?


Ich habe einen Ubuntu-Server zu Hause und benutze SSH-Schlüssel, um mich über das Terminal von meinem Laptop aus anzumelden. Selten, aber hauptsächlich von der Arbeit, muss ich auf diesen Server zugreifen, aber ich möchte keine Schlüssel auf meinem Arbeitslaptop kopieren - ich verwende dafür einfach ein einfaches Passwort.

Also, wenn ich Passwort von SSH Config-Datei anmelden, wird es mich fragen Passwort auf meinem Laptop auch, obwohl es Schlüssel enthält, richtig?

Gibt es eine Möglichkeit, dieses Verhalten zu stoppen?

Vielen Dank.


4
2018-04-14 19:37


Ursprung




Antworten:


Es ist möglich, Ihren Laptop dazu zu zwingen, die Schlüsseldatei zu verwenden, auch wenn sowohl das Passwort als auch die Key-basierte Methode verfügbar sind. Wenn Sie gerade eine Verbindung herstellen ssh user@your.host.tld -p 22, bearbeiten ~/.ssh/config und füge hinzu:

Host your.host.tld
    PreferredAuthentications publickey

Mit dieser Konfigurationsdatei können Sie noch weniger eingeben:

Host home
    Hostname your.host.tld
    User user
    PreferredAuthentications publickey
    Port 22

Mit dieser Konfiguration brauchen Sie nur ssh home.

Es ist möglich, passwortbasierte Logins auf eine bestimmte IP-Adresse zu beschränken. Im /etc/ssh/sshd_config, Sie hätten eine Zeile, die passwortbasierte Authentifizierung deaktiviert: PasswordAuthentication no. Um es für Logins von einer bestimmten IP zu aktivieren, könnten Sie verwenden:

Match Address 12.34.56.78
    PasswordAuthentication yes

Ich schlage vor, Sie Key-Based Auth verwenden, auch wenn auf der Arbeit. Es ist viel sicherer als Passwort-basierte Authentifizierung, da es nicht so einfach sein kann. Sie können mehrere Schlüssel für dasselbe Konto haben, das sollte kein Problem sein.

Weitere Anleitungen zur Konfiguration finden Sie auf der Handbuchseite von ssh_config (5). (für die Serverseite, siehe sshd_config (5))


1
2018-04-14 19:48



Das ist ein toller Trick! Ich habe Leute gesehen, die das bei meiner Arbeit gemacht haben und schämte sich zu fragen: =) Danke. Bis jetzt hatte ich .ssh-Skripte, die gerade Befehlszeile in ihnen hatten.
Ein weiterer Vorteil der Verwendung der SSH-Konfigurationsdatei gegenüber Skripten mit SSH-Optionen ist, dass Befehle wie sftp und scp arbeite auch damit. Betrachten Sie den Fall, in dem Sie eine Datei schnell kopieren müssen. Dann genügt es zu rennen scp home:.vimrc ~ Kopieren .vimrc von Ihrem Remote-Home-Verzeichnis im lokalen Home-Verzeichnis. - Lekensteyn


Verwenden Sie zwei private Schlüssel

Richten Sie Ihre Arbeitsstation mit demselben Verfahren ein (aber nicht den gleichen privaten Schlüssel) wie bei der Einrichtung Ihres Laptops:

  • Es gibt keinen guten Grund, einen privaten Schlüssel von einem anderen Computer zu kopieren. Wenn Sie auf Ihrer Workstation noch keinen neuen privaten Schlüssel generiert haben, tun Sie dies jetzt. Generiere auch den entsprechenden öffentlichen Schlüssel. In einem Terminal auf Ihrer Workstation

Art: ssh-keygen -t rsa

  • Kopieren Sie den öffentlichen Schlüssel Ihrer Arbeitsstation auf den Server. In einem Terminal auf Ihrer Workstation

Art: ssh-copy-id username@hostname.net

(Verwenden Sie jedoch Ihren tatsächlichen Benutzernamen und Hostnamen und geben Sie später Ihr Passwort ein, wenn Sie danach gefragt werden).

Dies installiert den öffentlichen Schlüssel Ihrer Arbeitsstation in die ~/.ssh/authorized_keys Datei für diesen Benutzer auf dem Server.

  • Es gibt keinen Schritt 3. Von nun an können Sie sich von Ihrer Workstation aus am Server anmelden, und Sie haben niemals den geheimen privaten Schlüssel Ihres Laptops von Ihrem Laptop kopiert.

Einzelheiten

Ich nehme an, dass das, was Sie wirklich fragen, ist

  • Ich habe einen Ubuntu-Server ("home")
  • Ich logge mich von meinem persönlichen Laptop ("Laptop") auf meinen Ubuntu-Server ein
  • Ich melde mich auch von meinem Arbeitscomputer ("Workstation") auf meinem Ubuntu-Server an.

Was ist der richtige Weg?

  • Ich könnte mich einfach mit dem gleichen Passwort von beiden Orten einloggen. Das kann nicht der richtige Weg sein, denn jeder sagt, dass Authentifizierung mit öffentlichen Schlüsseln viel besser ist als Passwörter. (ein)
  • Ich könnte den privaten Schlüssel einfach von meinem Laptop auf meine Workstation kopieren. Das kann nicht der richtige Weg sein, weil jeder sagt, dass der private Schlüssel niemals den Client-Rechner verlassen soll.

Die Leute haben es sich in den Kopf gesetzt, dass ein Account auf einem Server einen einzigen Benutzernamen und natürlich ein einziges autorisiertes Passwort hat.

Public-Key-Systeme wie SSH sind besser als das Passwort-System: Ein Konto auf einem Server hat einen einzigen Benutzernamen und eine beliebige Anzahl von autorisierten öffentlichen Schlüsselnalle in der Liste aufgeführt ~/.ssh/authorized_keys Datei.

(mehr Details).


2
2017-08-21 15:47





Nein, zumindest mit der Konfiguration, die ich habe, wenn Sie die Passwort-Authentifizierung aktivieren, wird nur nach dem Passwort gefragt, wenn Sie keinen Schlüssel haben.

Davon abgesehen, würde ich niemals die Passwortauthentifizierung auf einem Server aktivieren, der dem Internet ausgesetzt ist.


1
2018-04-14 19:39



Hey, danke für die Antwort. Ist das ein großes Sicherheitsrisiko?
Ja, ist es. Es ermöglicht Brute-Force-Angriffen auf die Felder Benutzername und Passwort. Selbst wenn sie nicht reinkommen, kann es eine ganze Reihe von Problemen verursachen. Als Beispiel muss ich meine auf ssh-basierte Authentifizierung verschieben, da meine Datei hosts.deny zu groß wird, da fail2ban verwendet wird, um den Umfang des Missbrauchs zu begrenzen, den ssh Benutzername loggt. - SinaCutie
Erstellen Sie einfach ein anderes Schlüsselpaar für Ihren PC @work. Auf diese Weise können Sie den key @ work separat von Ihrem key @ home sperren. - jippie