Vraag Hoe SSH-login met wachtwoord automatiseren?


Hoe SSH-login met wachtwoord automatiseren? Ik configureer mijn test-VM, dus zware beveiliging wordt niet overwogen. SSH gekozen voor acceptabele beveiliging met minimale configuratie.

ex)

echo password | ssh id@server

Dit werkt niet.

Ik herinner me dat ik dit deed met een paar trucjes die iemand me begeleidde, maar ik kan me nu niet herinneren welke truc ik heb gebruikt ...


332
2018-03-01 11:07


oorsprong


FreeBSD accepteert geen wachtwoordloze toetsen. Laat je niet verleiden. Sommige Linux-servers accepteerden het echter. Ik geloof dat de Linux-server verkeerd is geconfigureerd. - Eonil
Dit is een geldige vraag. Ik wil bijvoorbeeld een gebruiker toestaan ​​een wachtwoord in te voeren en dan in te loggen op een andere computer die het gebruikt. Ik kan niet aannemen dat er ssh-sleutels op al onze machines worden gedistribueerd. De onderstaande antwoorden helpen hier niet bij. - dfrankow
unix.stackexchange.com/questions/38737/... || unix.stackexchange.com/questions/38737/... || stackoverflow.com/questions/233217/pass-password-to-su-sudo-ssh - Ciro Santilli 新疆改造中心 六四事件 法轮功
Zeer belangrijke vraag. Ik heb ook een antwoord nodig, mijn webspace-provider blokkeert om keyfiles op de server te zetten, dus ik moet het wachtwoord passeren zonder keyfiles. - Radon8472


antwoorden:


Gebruik geen wachtwoord. Genereer een passphrassess SSH-sleutel en duw deze naar uw VM.

Als u al een SSH-sleutel hebt, kunt u deze stap overslaan ... Gewoon raken invoeren voor de sleutel en beide wachtzinnen:

$ 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.

Kopieer uw sleutels naar de doelserver:

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

Probeer nu in te loggen op de machine, met ssh 'id@server'en inchecken:

.ssh/authorized_keys

om ervoor te zorgen dat we geen extra sleutels hebben toegevoegd die u niet verwachtte.

Controleer tenslotte het inloggen ...

$ ssh id@server

id@server:~$ 

Misschien wilt u ook kijken naar het gebruik ssh-agent als u wilt proberen uw sleutels beveiligd te houden met een wachtwoordzin.


296
2018-03-01 11:17



Ik heb uiteindelijk besloten om sleutelparen te gebruiken. Omdat ik me realiseerde dat dit de meest eenvoudige manier is. - Eonil
@Eonil: kom niet in de verleiding om sleutels te gebruiken zonder een wachtwoordzin. Leer hoe je ssh-agent of optocht kunt gebruiken. - Iain
Dit is een goed antwoord, maar niet het juiste antwoord op de vraag. - John Hunt
Dit soort antwoorden erg, echt ergeren me. Dat was niet de vraag. Niemand heeft gevraagd hoe sleutelparen moeten worden gebruikt. - Matt Fletcher
Dit geeft geen antwoord op de vraag. Het is een goed antwoord voor een heel andere vraag, maar het is vreselijk voor degene die wordt gevraagd. - srchulo


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

495
2018-05-31 09:08



Yup, soms kan je key-based auth om verschillende redenen niet gebruiken. Bijvoorbeeld, op dit moment kan ik keyauth niet gebruiken op een plesk-server omdat het uit de doos niet is ingeschakeld en ik geen root heb. - John Hunt
+1! Als een kanttekening, moet je gewoon doorlopen ssh een keer voor gebruik sshpass, om de RSA-vingerafdruk te bevestigen - user123444555621
-1 voor het gebruik van het wachtwoord in de opdracht. Hiermee wordt het wachtwoord geregistreerd bij .bash_history in platte tekst op uw machine.
@MisterDood Je zou kunnen rennen history -r na het commando om je geschiedenis te wissen. Maar goed punt. - NuclearPeon
Pro tip: als u niet wilt dat een specifieke opdracht wordt weergegeven in .bash_history, plaatst u de opdracht met een spatie. Het werkt gewoon. Gebruikers van deze opdracht zouden echter meer bezorgd moeten zijn dat niet-bevoorrechte gebruikers op het systeem de volledige opdrachtregel met ps kunnen zien, die uiteraard het wachtwoord bevat. Aangezien ssh-sessies over het algemeen lang leven, is dit een beveiligingsprobleem. - CubicleSoft


Eenvoudig antwoord in drie eenvoudige stappen

Genereer een rsa keypair:

# ssh-keygen

kopieer het dan op de server met een eenvoudige opdracht:

# ssh-copy-id userid@hostname

je kunt nu inloggen zonder wachtwoord:

# ssh userid@hostname

56
2017-11-14 12:57



Werkt prima met de standaardwaarden. Het gebruik van ~ / rsa4live.pub werkte niet voor mij tijdens een poging ssh-copy-id. - Cees Timmerman
Als u wilt dat deze stappen voor een andere gebruiker werken, 1. ssh-keygen 2. ssh-copy-id nazir @ hostname 3. ssh nazir @ hostname - Venfah Nazir
Voor mij was het dat ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host - Gabriel Fair
Dit is geen antwoord op de vraag. - Steve Bennett
En? Het antwoord is hierboven, sshpass ... - lzap


Gebruik verwacht:

#!/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

Voorbeeld:

# ./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



Het werkte, maar het kan niet worden afgedrukt op een externe machine. - Eonil
het werkt goed voor sommige apparaten kan de sleutel niet van tevoren plaatsen, omdat het IP-adres telkens wordt gewijzigd. - larrycai
het is goed om toe te voegen -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null ook voor ssh-opdracht om te voorkomen dat de machine wordt geaccepteerd door bekende_hosts - larrycai
B .. b maar muh ssh-toetsen ... - Damien Ó Ceallaigh
Meer gedetailleerd voorbeeld van dit script is te vinden op: linuxaria.com/howto/...  Dit voorbeeld zou hier ook moeten werken met externe commando's - Radon8472


Dit heeft misschien geen zin voor u, maar u kunt het doen met Perl:

\#!/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



Evenzo kunt u doen met deze Ruby github.com/net-ssh/net-ssh - EnabrenTane


Weet je zeker dat je geen SSH-sleutels wilt gebruiken in plaats van wachtwoorden? Op die manier is het zowel veilig als automatisch.


9
2018-03-01 11:14



Het gebruik van SSH-sleutels zonder wachtwoord is slechts iets veiliger dan het gebruik van wachtwoorden in een bestand. - yunzen
@yunzen onjuist. Sleutelverificatie beschermt je tegen mitm-aanvallen, zelfs als je de host-sleutel niet kent. Een aanvaller kan de server nabootsen, maar nooit verbinding maken met de echte server. Met wachtwoordverificatie ziet elke server waarmee u verbinding maakt (legitiem of niet) het wachtwoord. Om die redenen is een ssh-sleutel zonder wachtwoord veel veiliger dan alleen het opslaan van het wachtwoord in een bestand. - kasperd
Dit is geen antwoord. - Steve Bennett
@SteveBennett Het is hetzelfde als het geaccepteerde antwoord en is ervoor geplaatst, hoewel het minder details bevat. - Michael Hampton♦
Welnu, ik zou zeggen dat het geaccepteerde antwoord een goed antwoord is op een vraag die niet is gesteld. Dit is niets. - Steve Bennett


Het verbaast me dat niemand wordt genoemd plink van de putty-tools pakket in Ubuntu:

plink user@domain -pw mypass  [cmd]

Het is ook beschikbaar op Windows en de syntaxis is meestal compatibel met de openssh-client.


4
2017-07-09 13:15



Voor windows is je antwoord goed, unfurtunally heeft linux / unix user normaal gesproken geen plink - Radon8472
het is in de putty-tools pakket - eadmaster