Wil je zonder wachtwoord in kunnen loggen op de SSH-omgeving van je server of een gebruiker? Dat kan. Kort gezegd heb je daar alleen het volgende commando voor nodig:
ssh-copy-id gebruiker@servernaam
Meer informatie over hoe dit werkt? Lees dan verder.
Het niet in hoeven typen van een wachtwoord wanneer je op je server inlogt, heeft een paar voordelen.
Ten eerste is het dan niet meer nodig om je wachtwoord te onthouden. Dat betekent dat je een volledig willekeurig en lang wachtwoord in kan stellen, waardoor het achterhalen daarvan door hackers praktisch onmogelijk wordt.
Daarnaast betekent het dat scripts ook geen wachtwoord in hoeven te voeren. Daarmee kun je taken tussen servers automatiseren, zoals bijvoorbeeld het wegschrijven van back-ups van de ene naar de andere server of het automatisch downloaden naar een PC of server op kantoor..
Ten slotte is het gewoon erg makkelijk. Je kunt bijvoorbeeld via GIT je wijzigingen pushen of pullen, zonder daarbij iedere keer het wachtwoord van je account in te hoeven geven.
Door het uitwisselen van SSH-keys tussen twee servers of een PC en je server, hoef je geen wachtwoord meer in te geven. Betekent dat dan, dat de verbinding open staat? En is dat dan nog wel veilig?
Het antwoord is ja, dat is veilig. Dat zit zo.
Om zonder wachtwoord in te kunnen loggen, moet je zogenaamde SSH-keys uitwisselen. Een SSH-key is een soort sleutel die uniek is per apparaat. Dus iedere computer, laptop of server (en sterker nog: ieder account op een server) heeft een eigen, aparte en niet te kraken SSH-key.
Die SSH-key bestaat uit twee delen: een public key en een private key. De publieke SSH-key wordt naar de server te gekopieerd, de private key blijft op jouw computer staan. Als je computer een verbindingsverzoek naar de server stuurt, antwoordt de server een met de publieke sleutel gecodeerde verbinding. Alleen de juiste private key kan die verbinding decoderen en zo de verbinding tot stand brengen. Zo lang niemand jouw private key in handen krijgt, kan er dus ook niemand automatisch verbinden.
Het enige nadeel is: als je computer gestolen wordt en iemand kan op jouw account inloggen, kan die van daaruit dus ook zonder wachtwoord op de server komen. Door het verwijderen van de public key op de server zelf, blokkeer je vervolgens de mogelijkheid om zonder wachtwoord in te loggen.
Om de public key van je computer naar de server te verplaatsen, moet er eerst een SSH-key zijn op je computer. Gebruik hiervoor het commando ssh-keygen als er nog geen SSH-keys zijn.
N.B.: dit geldt voor ieder apparaat, of het nu een computer is, een laptop of een server. Hou er ook rekening mee dat keys gebruiker-gebonden zijn: zowel aan de private als aan de public kant.
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in Your public key has been saved in .pub The key fingerprint is: SHA256:GeJqdhv+j5KCFHf/rRhtcz8nmsZ94iGLrflSk2P0QQc user@DEVICE-V6AO6S8 The key's randomart image is: +---[RSA 3072]----+ | S. | | . .| | . . . . | | . .... o . . | | o ...E . o . | | . . .. * . | | . .+ o...+=o+. | | .o.o*o =o*+==.o| | .oo+.*o*oo* | +----[SHA256]-----+
De vragen die je krijgt hoef je meestal niet in te vullen en je kunt meestal dan ook gewoon drie keer op enter drukken. Heb je al een sleutelpaar en wil je een apart paar aanmaken (bijvoorbeeld id_rsb in plaats van id_rsa) of moet je een passphrase instellen, vul dan die stappen wel in.
Het uitwisselen van SSH-keys gaat via het ssh-copy-id commando.
$ ssh-copy-id root@62.84.242.136 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys root@62.84.242.136's password: setsockopt IPV6_TCLASS 8: Operation not permitted: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@62.84.242.136'" and check to make sure that only the key(s) you wanted were added.
Let op: vul hier natuurlijk de juiste gebruikersnaam en IP-adres of hostnaam in.
In dit proces wordt je gevraagd om in te loggen, met het wachtwoord deze keer. Vervolgens wordt het publieke deel van de SSH-key op de server gezet.
Vanaf nu kun je inloggen door alleen het commando ssh root@62.84.242.136 in te geven. Je computer maakt verbinding met de server, controleert of de publieke sleutel op de server overeenkomt met het geheime deel op de computer en logt dan in.
Let op: je kunt dus nu alleen vanuit deze computer naar de gebruiker root op deze server verbinden. Dat betekent dus niet dat je ook naar andere gebruikers, zoals admin, kunt verbinden. Hiervoor moet je jouw public key ook uitwisselen met admin@62.84.242.136.