Ik ben thuis lui en gebruik wachtwoordauthenticatie voor mijn thuismachines. Ik ben klaar om over te stappen naar sleutelgebaseerde authenticatie. Er zijn veel opties op het web over hoe dit te doen, inclusief catting dan sshing de sleutel over, scping de sleutel direct over, enz.
Ik ben op zoek naar de gemakkelijkste en aanbevolen manier om een sleutel te kopiëren, hopelijk is er een gemakkelijke wrapper ergens in het Ubuntu ssh pakket?
Ik'ben al op de hoogte van hoe wachtwoordlogins uit te schakelen.
Het ssh-copy-id
commando (in het openssh-client pakket en standaard geïnstalleerd) doet precies dit:
ssh-copy-id [email protected]
kopieert de publieke sleutel van uw standaard identiteit (gebruik -i identity_file
voor andere identiteiten) naar de host op afstand.
De standaard identiteit is uw "standard" ssh sleutel. Deze bestaat uit twee bestanden (publieke en private sleutel) in uw ~/.ssh
directory, normaal identity
, id_rsa
, id_dsa
, id_ecdsa
of id_ed25519
genoemd (en hetzelfde met .pub
), afhankelijk van het type sleutel. Als u niet meer dan één ssh sleutel heeft aangemaakt, hoeft u zich geen zorgen te maken over het specificeren van de identiteit, ssh-copy-id zal deze gewoon automatisch kiezen.
Als je geen identiteit hebt, kun je er een genereren met de tool ssh-keygen
.
Bovendien, als de server een poort gebruikt die anders is dan de standaard poort (22
) moet je aanhalingstekens gebruiken op deze manier (bron):
ssh-copy-id "[email protected] -p <port-number>"
Ik hou van het antwoord van Marcel. Ik kende dit commando niet. Ik'heb altijd gebruikt wat ik op de Oracle web site had gevonden:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
Ik dacht het hier nog te posten, omdat het een goede illustratie is van wat in shell code bereikt kan worden met de kracht van ssh
. Maar het gebruik van de ssh-copy-id
is zeker een veiliger manier om het goed te doen!
Merk op dat als de map .ssh
nog niet bestaat, het bovenstaande commando zal falen. Daarnaast is het misschien beter om bij het aanmaken van het bestand een zo laag mogelijke permissie in te stellen (in principe alleen lezen-schrijven voor de eigenaar). Hier is een meer geavanceerd commando:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'