2009-07-18 16:51:50 +0000 2009-07-18 16:51:50 +0000
155
155

Hoe stel ik SSH in zodat ik mijn wachtwoord niet hoef in te typen?

Hoe stel ik SSH in zodat ik mijn wachtwoord niet hoef in te typen als ik verbinding maak met een host?

Antwoorden (10)

167
167
167
2009-07-18 17:36:45 +0000

Genereer een SSH sleutel (als je er geen hebt)

Als je toevallig GNOME gebruikt, kan de seahorse applicatie (“Wachtwoorden en Encryptie Sleutels”) dit voor je doen: Bestand -> Nieuw -> Veilig Shell Sleutel.

Als u liever terminal gebruikt, voer dan ssh-keygen -t <type> uit om een sleutelpaar te genereren. Geldige sleutelpaar types zijn:

  • rsa: de standaard
  • dsa: min of meer gelijkwaardig, maar beperkt tot 1024 bit sleutels
  • ecdsa: dezelfde beveiliging met kleinere sleutels, maar relatief nieuw en enigszins zeldzaam in SSH software.
  • ed25519: zeer veilig (beter bestand tegen side channel attacks en zwakke random number generators). Zeer snelle handtekeninggeneratie. Zeer nieuw. Alleen beschikbaar in OpenSSH >= 6.5 .

Het programma zal u vragen om een passphrase en een locatie waar de nieuwe sleutel opgeslagen moet worden. Het is aan te raden om het voorgestelde standaardpad te gebruiken, omdat alle andere programma’s daar naar zullen zoeken.

Upload de publieke sleutel naar de server op afstand

Nogmaals, seahorse kan dat vaak voor je doen - in Mijn Persoonlijke Sleutels, klik met de rechtermuisknop op je SSH sleutel en kies Configure key for secure shell.

Of, ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host in de terminal.

Of, volledig handmatig stap voor stap:

  1. Maak een directory (als die nog niet bestaat) met de naam .ssh in de homedirectory van de gebruiker op afstand op de host op afstand.
  2. Maak in die directory een bestand aan met de naam authorized_keys (als dat nog niet bestaat).
  3. In het geval dat uw remote umask liberaler is dan normaal, maak het bestand dan niet group-writable: chmod go-w ~/.ssh ~/.ssh/authorized_keys.
  4. Tenslotte, kopieer (append) de inhoud van uw lokale public key (~/.ssh/id_rsa.pub) naar het remote ~/.ssh/authorized_keys bestand.

Laad de sleutel in de ssh agent

Als je je private sleutel in een ssh agent laadt, zal deze de gedecodeerde sleutel in het geheugen bewaren. We willen dit om te voorkomen dat we telkens opnieuw het wachtwoord moeten invoeren als we naar een server gaan.

Eerst moet de agent gestart worden of het pad van een gelanceerde communicatie socket moet in een variabele geladen worden. Het draaien van ssh-agent op een terminal genereert commando’s voor het toewijzen en instellen van de agent variabelen. Deze commando’s kunnen worden opgeslagen in een bestand voor gebruik in een andere terminal. Als alternatief kan men deze commando’s uitvoeren en vergeten dezelfde agent opnieuw te gebruiken in een andere terminal. b.v.: eval $(ssh-agent).

Het laden van de sleutel is een eenvoudige kwestie van het uitvoeren van ssh-add en het geven van de pass phrase.

Als u GNOME gebruikt, biedt gnome-keyring-daemon gewoonlijk dezelfde SSH-agent functionaliteit als ssh-agent, dus u zou niets hoeven te starten. GNOME zal ook automatisch de sleutel laden en ontgrendelen bij het inloggen.

Shell in de remote server zonder een wachtwoord

Als alles correct is gedaan, zal het gebruik van ssh user@server niet om een wachtwoord vragen. Als er iets mis is met de agent en niet met de sleutel, dan wordt er gevraagd om de pass phrase voor de sleutel in te typen, en niet het wachtwoord voor de gebruikersaccount.

Alles dat ssh gebruikt voor communicatie zal werken zonder het wachtwoord voor de gebruikersaccount in te voeren als de juiste sleutel in de agent geladen is. Programma’s als scp , sftp en rsync maken hier gebruik van.


Notes:

  • U hebt alleen een SSHv2-sleutel nodig, aangezien SSHv1 erg onveilig is en nu ongebruikt is.
  • Je hebt ook maar één type sleutel nodig - RSA of DSA is voldoende. (ed25519 en ECDSA zijn beide recent en worden dus niet overal ondersteund).
  • Al deze stappen zijn hetzelfde voor zowel RSA als DSA sleutels. Als u DSA gebruikt, gebruik dan id_dsa in plaats van id_rsa, en ECDSA zal id_ecdsa hebben.
  • OpenSSH servers ouder dan 3.0 gebruikten authorized_keys2 - maar het is echt onwaarschijnlijk dat u iets ouder dan 5.0 in gebruik zult vinden.
  • Deze instructies zijn alleen van toepassing op OpenSSH versie 3.0 en nieuwer. lsh, ssh.com, en andere (al dan niet Unix) SSH servers zijn niet in deze tutorial opgenomen.

Voorbeelden:

  • De public key naar een host op afstand kopiëren:

  • Agent variabelen opslaan voor hergebruik (uitgewerkt voorbeeld) ssh-agent \> ~/.ssh/cross-terminal-agent . ~/.ssh/cross-terminal-agent

22
22
22
2009-07-18 17:28:34 +0000

Je hebt niet gespecificeerd op welke Unix je zit, met welke Unix je verbinding maakt, welke shell je gebruikt, welke SSH-variant je gebruikt, enzovoort. Dus sommige dingen moeten misschien een beetje aangepast worden; dit is gebaseerd op redelijk recente versies van OpenSSH, die op veel Unix-varianten gebruikt wordt.

Dit is alles van je lokale desktop systeem.

ssh-keygen

Zorg ervoor dat je de standaard gebruikt voor de keyname. Ik stel voor dat je wel een passphrase op die sleutel zet, anders is het een veiligheidsprobleem. “-t rsa” zou geen slecht idee zijn, maar is waarschijnlijk niet nodig.

ssh-copy-id username@server

Dat vraagt om het wachtwoord dat je gebruikt om in te loggen, en stelt de authorized_keys dingen voor je in. (je hoeft het niet met de hand te doen)

Dan, dit:

`ssh-agent`

of misschien dit:

exec ssh-agent sh

of:

exec ssh-agent bash

Dat zal een SSH agent opstarten die je sleutel kan vasthouden. Op veel moderne Unix varianten, als je grafisch bent ingelogd, zal dit al hebben plaatsgevonden. De eerste variant (met de backticks) zet een ssh-agent op de achtergrond en stelt de omgevingsvariabelen in om ermee te praten. De tweede twee laten de agent een shell voor je draaien, zodat wanneer je de shell afsluit, de agent afsluit.

Veel moderne Unix varianten hebben al een agent voor je draaien, zeker als je grafisch bent ingelogd. Je zou “ps aux | grep ssh-agent” of “ps -ef | grep ssh-agent” kunnen proberen; als er al iets draait, gebruik dat dan.

Dan, tenslotte:

ssh-add

Het zal om een passphrase vragen; geef het de passphrase die je aan ssh-keygen hebt gegeven. Er zijn ook manieren om het grafisch te laten vragen. En je kunt de ssh-agent en ssh-add dingen in je login scripts zetten (setup is verschillend afhankelijk van de shell die je gebruikt) om dit te automatiseren, maar sommige Unix varianten (huidige Ubuntu Linux, bijvoorbeeld) doen het meeste automatisch, zodat alles wat je echt hoeft te doen is een sleutel maken en ssh-copy-id gebruiken om het op de remote host in te stellen.

Nu, “ssh username@server” zou moeten werken zonder om enige authenticatie te vragen. Achter de schermen gebruikt het een sleutel die de ssh-agent bewaart, en vraagt de agent om de magische ondertekentrucs voor hem te doen.

11
11
11
2009-07-25 03:42:47 +0000

Het is ook mogelijk om dit in PuTTY op Windows te doen.

Zodra je het publieke/private sleutelpaar helemaal hebt ingesteld (zoals andere antwoorden hier laten zien), start je PuttyGen. Daarin laad je de bestaande private sleutel die je al hebt ingesteld, en sla je deze op als een PuTTY private sleutel (ppk).

Klik dan in PuTTY op de opgeslagen sessie waarop je auto-login wilt en klik op Laden. Ga dan naar Verbinding -> Gegevens in het linkerdeelvenster, en typ bij “Gebruikersnaam auto-login” de gebruikersnaam voor die externe server in:

Ga daarna naar Connection -> SSH -> Auth, en blader naar de ppk die je in PuttyGen hebt gemaakt:

Ga dan terug naar de sessie pagina en bewaar de sessie die je eerder hebt geladen.

3
3
3
2009-07-18 17:39:21 +0000

Op basis van een vergelijkbare vraag op ServerFault , raad ik aan om ssh-copy-id te gebruiken, die alle stappen die nodig zijn om authenticatiesleutels in te stellen voor je doet:

ssh-copy-id is een script dat ssh gebruikt om in te loggen op een andere machine (vermoedelijk met een login wachtwoord, dus wachtwoord authenticatie moet ingeschakeld zijn, tenzij je slim gebruik hebt gemaakt van meerdere identiteiten)

Het verandert ook de permissies van de home, ~/. ssh, en ~/.ssh/authorized_keys om de schrijfbaarheid van de groep te verwijderen (die anders zou verhinderen dat u zich aanmeldt, als de sshd op afstand StrictModes in zijn configuratie heeft ingesteld).

Als de optie -i wordt gegeven, wordt het identiteitsbestand (standaard ~/.ssh/identity.pub) gebruikt, ongeacht of er sleutels in je ssh-agent staan.

Alles wat je moet doen is simpelweg dit:

ssh-copy-id user@host

Typ één keer je wachtwoord in, en je bent klaar om te gaan!

3
3
3
2009-07-18 17:57:35 +0000

Afgezien van alles wat al verteld is over hoe je ssh sleutels instelt, raad ik Keychain aan als ssh-agent console frontend waarmee je er slechts een per systeemproces kunt hanteren in plaats van per login.

Ik weet dat er al Gnome en KDE tools zijn die hetzelfde doen, maar als je het console junkie type bent is dit geweldig (en kan op de meeste Unix systemen gebruikt worden).

Om het te gebruiken, voeg je gewoon het volgende toe aan je ~/.bashrc (vergelijkbaar voor andere shells):

if type keychain >/dev/null 2>/dev/null; then
  keychain --nogui -q <all your SSH/PGP keys>
  [-f ~/.keychain/${HOSTNAME}-sh] && . ~/.keychain/${HOSTNAME}-sh
  [-f ~/.keychain/${HOSTNAME}-sh-gpg] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
2
2
2
2013-02-01 16:58:45 +0000

Ik heb deze zeer korte tutorial geschreven nadat ik ECHT ECHT ECHT gefrustreerd raakte van ECHT ECHT lange tutorials want het is echt zo simpel :)

test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"

scp ~/.ssh/id_rsa.pub destID@destMachine:/tmp/ #type password

ssh destID@destMachine #type password

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

rm /tmp/id_rsa.pub
2
2
2
2009-07-18 16:55:59 +0000

(http://linuxproblem.org/art_9.html)

Jouw doel

Je wilt Linux en OpenSSH gebruiken om je taken te automatiseren. Daarom heb je een automatische login nodig van host A / gebruiker a naar host B / gebruiker b. Je wilt geen wachtwoorden invoeren, omdat je ssh wilt aanroepen vanuit een shellscript.

2
2
2
2012-12-02 23:11:47 +0000

Putty heeft een -pw optie waarmee je een snelkoppeling op het bureaublad kunt maken zoals deze:

"C:\Program Files\PuTTY\putty.exe" -ssh user@192.168.2.2 -pw your_password
1
1
1
2009-07-18 17:06:33 +0000
  1. Op de verbindende host, voer ssh-keygen uit. (Als het je vertelt dat je een type moet specificeren, doe dan ssh-keygen -t rsa.) Als het je vraagt om een bestandslocatie, neem dan de standaard. Als er om een passphrase wordt gevraagd, druk dan op enter voor no passphrase.
  2. cat ~/.ssh/id_rsa.pub (of wat de standaard bestandslocatie in ssh-keygen ook was, maar je moet een echt oude ssh installatie hebben om het anders te laten zijn); kopieer de uitvoer naar je klembord.
  3. Log normaal in op de bestemmingshost als de account waarmee u verbinding wilt maken. Bewerk het bestand ~/.ssh/authorized_keys (als ~/.ssh niet bestaat, slogin dan ergens naartoe; dit is de eenvoudige, gemakkelijke manier om het aangemaakt te krijgen met de juiste permissies). Plak uw klembord (met daarin de id_rsa.pub van de andere host) in dit bestand.
0
0
0
2012-10-25 12:27:48 +0000

Als je het allemaal in de terminal in Linux wilt doen:

Op de host

cd ~/.ssh/

ssh-keygen -t {rsa|dsa} -b {1024|2048|4096} -C “wat commentaar als je wilt” -f id_ArbitraryName

De items in de {} zijn opties, gebruik rsa of dsa en kies de bit grootte (groter is veiliger)

Dan moet je de permissies toevoegen aan de authorized_keys en authorized_keys2 bestanden.

cat id_ArbitraryName.pub > authorized_keys

cat id_AribtraryName.pub > authorized_keys2

Download dan het id_AribtraryName bestand naar de box waar vandaan u wilt ssh-en. Als de verbindende box unix-gebaseerd is, kan een configuratiebestand nodig zijn (in putty, iemand hierboven heeft dat behandeld).

Op de verbindende box

In je config bestand - vim ~/.ssh/config

Host example.host.com # of je computer naam

Gebruikersnaam gebruiker

IdentityFile ~/.ssh/id_ArbitraryName

Het config bestand heeft rechten van 600 nodig. De SSh map heeft 700 nodig.

Hoop dat dit helpt als je tegen het config probleem aanloopt dat veel weggelaten wordt.