Frage Wie automatisiere ich die SSH-Anmeldung mit Passwort?


Wie automatisiere ich die SSH-Anmeldung mit Passwort? Ich konfiguriere meine Test-VM, daher wird eine hohe Sicherheit nicht berücksichtigt. SSH gewählt für akzeptable Sicherheit mit minimaler Konfiguration.

Ex)

echo password | ssh id@server

Dies funktioniert nicht.

Ich erinnere mich, dass ich das mit einigen Tricks gemacht habe, die mich jemand geführt hat, aber ich kann mich jetzt nicht an den Trick erinnern, den ich benutzt habe ...


332
2018-03-01 11:07


Ursprung


FreeBSD hat keine Schlüssel ohne Passwort akzeptiert. Sei nicht versucht. Einige Linux-Server haben dies jedoch akzeptiert. Ich glaube, der Linux-Server wurde falsch konfiguriert. - Eonil
Dies ist eine gültige Frage. Ich möchte zum Beispiel zulassen, dass ein Benutzer ein Kennwort eingibt, und sich dann bei einem anderen Computer anmelden, der es verwendet. Ich kann nicht davon ausgehen, dass ssh-Schlüssel auf all unseren Maschinen verteilt werden. Die untenstehenden Antworten helfen dieser Situation nicht. - dfrankow
unix.stackexchange.com/questions/38737/... || unix.stackexchange.com/questions/38737/... || stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh - Ciro Santilli 新疆改造中心 六四事件 法轮功
Sehr wichtige Frage. Ich brauche auch eine Antwort, mein Webspace Provider blockiert, um Keyfiles auf den Server zu stellen, also muss ich das Passwort ohne Keyfiles weitergeben. - Radon8472


Antworten:


Verwenden Sie kein Passwort. Erstelle einen passwortlosen SSH-Schlüssel und schiebe ihn an deine VM.

Wenn Sie bereits einen SSH-Schlüssel haben, können Sie diesen Schritt überspringen ... Schlag einfach Eingeben für den Schlüssel und beide Passphrasen:

$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.

Kopieren Sie Ihre Schlüssel auf den Zielserver:

$ ssh-copy-id id@server
id@server's password: 

Versuchen Sie jetzt, sich bei der Maschine anzumelden ssh 'id@server'und check-in:

.ssh/authorized_keys

um sicherzustellen, dass wir keine zusätzlichen Schlüssel hinzugefügt haben, die Sie nicht erwartet haben.

Überprüfen Sie abschließend die Anmeldung ...

$ ssh id@server

id@server:~$ 

Sie können auch in Verwendung suchen ssh-agent Wenn Sie versuchen möchten, Ihre Schlüssel mit einer Passphrase geschützt zu halten.


296
2018-03-01 11:17



Ich entschied mich schließlich für die Verwendung von Schlüsselpaaren. Weil ich erkannt habe, dass das der einfachste Weg ist. - Eonil
@Eonil: Versuchen Sie nicht, Schlüssel ohne eine Passphrase zu verwenden. Erfahren Sie, wie Sie ssh-agent oder pageant verwenden. - Iain
Dies ist eine gute Antwort, aber nicht die richtige Antwort auf die Frage. - John Hunt
Diese Art von Antworten nervt mich wirklich. Das war nicht die Frage. Niemand fragte, wie man Schlüsselpaare benutzt. - Matt Fletcher
Dies beantwortet die Frage nicht. Es ist eine gute Antwort für eine ganz andere Frage, aber es ist schrecklich für den einen gefragt. - srchulo


$ sudo apt-get install sshpass
$ sshpass -p your_password ssh user@hostname

495
2018-05-31 09:08



Yup, manchmal kann man key-based auth aus verschiedenen Gründen nicht benutzen .. zum Beispiel kann ich keyauth nicht auf einem plesk Server benutzen, weil es außerhalb der Box nicht aktiviert ist und ich keinen root habe. - John Hunt
+1! Als Randnotiz müssen Sie einfach laufen ssh einmal vor der Verwendung sshpass, um den RSA-Fingerabdruck zu bestätigen - user123444555621
-1, um das Passwort im Befehl verwenden zu müssen. Dies protokolliert das Passwort unter .bash_history im Klartext auf Ihrer Maschine.
@MisterDood Du könntest rennen history -r nach dem Befehl zum Löschen Ihres Verlaufs. Guter Punkt obwohl. - NuclearPeon
Profi-Tipp: Wenn Sie nicht möchten, dass ein bestimmter Befehl in .bash_history angezeigt wird, setzen Sie dem Befehl ein Leerzeichen voran. Es funktioniert einfach. Benutzer dieses Befehls sollten jedoch mehr darauf achten, dass nicht privilegierte Benutzer auf dem System die vollständige Befehlszeile mit ps sehen können, die natürlich das Kennwort enthält. Da SSH-Sitzungen in der Regel langlebig sind, ist dies ein Sicherheitsproblem. - CubicleSoft


Einfache Antwort in drei einfache Schritte

Generiere ein rsa Schlüsselpaar:

# ssh-keygen

dann kopiere es auf den Server mit Ein einfacher Befehl:

# ssh-copy-id userid@hostname

Sie können sich jetzt einloggen ohne Passwort:

# ssh userid@hostname

56
2017-11-14 12:57



Funktioniert gut mit den Standardwerten. Die Verwendung von ~ / rsa4live.pub funktionierte bei mir nicht ssh-copy-id. - Cees Timmerman
Wenn Sie möchten, dass diese Schritte für verschiedene Benutzer funktionieren, 1. ssh-keygen 2. ssh-copy-id nazir @ Hostname 3. ssh nazir @ Hostname - Venfah Nazir
Für mich war es ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host - Gabriel Fair
Dies ist keine Antwort auf die Frage. - Steve Bennett
Und? Die Antwort ist oben, sshpass ... - lzap


Verwenden Sie erwarten:

#!/usr/bin/expect -f
#  ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]

spawn ssh $name@$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact

Beispiel:

# ./1.ex password localhost ooshro
spawn ssh ooshro@localhost
ooshro@localhost's password: 
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/
Last login: Tue Mar  1 12:41:12 2011 from localhost

25
2018-03-01 11:08



Es hat funktioniert, aber es kann nicht aus der Remote-Maschine drucken. - Eonil
es funktioniert gut für einige Maschine kann nicht den Schlüssel im Voraus, da IP-Adresse jedes Mal geändert wird. - larrycai
Es wird gut sein, hinzuzufügen -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null auch für ssh-Befehl, um zu vermeiden, die Maschine in known_hosts zu akzeptieren - larrycai
B .. b aber muh ssh keys ... - Damien Ó Ceallaigh
Ausführlichere Beispiele für dieses Skript finden Sie unter: linuxaria.com/howto/...  Diese Beispiele sollten auch mit Remote-Befehlen funktionieren - Radon8472


Das mag dir nichts nützen, aber du kannst es mit Perl machen:

\#!/usr/bin/perl  
use warnings;  
use strict;  

use Net::SSH::Perl;  
my $host = 'remote.serv.er';  
my $user = 'root';  
my $pass = 'hunter2';  
my $ssh = Net::SSH::Perl->new('$host');  
$ssh->login('$user', '$pass') or die "Oh noes! $!";

11
2018-03-01 11:52



Ebenso können Sie mit diesem Ruby machen github.com/net-ssh/net-ssh - EnabrenTane


Sicher, Sie möchten nicht SSH-Schlüssel statt Passwörter verwenden? So ist es sicher und automatisch.


9
2018-03-01 11:14



Die Verwendung von SSH-Schlüsseln ohne Passwort ist nur geringfügig sicherer als die Verwendung von Passwörtern in einer Datei. - yunzen
@ yunzen Falsch. Die Schlüsselauthentifizierung schützt Sie vor Mit-Attacken, selbst wenn Sie den Host-Schlüssel nicht kennen. Ein Angreifer könnte die Identität des Servers annehmen, aber niemals eine Verbindung zum echten Server herstellen. Mit Passwort-Authentifizierung wird jeder Server, mit dem Sie sich verbinden (legitim oder nicht), das Passwort sehen. Aus diesen Gründen ist ein SSH-Schlüssel ohne Passwort viel sicherer als nur das Speichern des Passworts in einer Datei. - kasperd
Dies ist keine Antwort. - Steve Bennett
@SteveBennett Es ist das gleiche wie die angenommene Antwort und wurde davor veröffentlicht, obwohl es weniger Details enthält. - Michael Hampton♦
Nun, ich würde sagen, die akzeptierte Antwort ist eine anständige Antwort auf eine Frage, die nicht gestellt wurde. Das ist nichts. - Steve Bennett


Ich bin überrascht, dass niemand erwähnt hat plink von dem putty-tools Paket in Ubuntu:

plink user@domain -pw mypass  [cmd]

Es ist auch unter Windows verfügbar und die Syntax ist größtenteils mit dem openssh-Client kompatibel.


4
2017-07-09 13:15



Für Windows ist Ihre Antwort gut, leider haben Linux / Unix-Benutzer in der Regel kein Plink - Radon8472
es ist in der putty-tools Paket - eadmaster