Skapa en nyckel
Vi börjar med den enklaste formen, att skapa ett klassiskt SSH-nyckelpar:
ssh-keygen -t rsa -C "Testnyckel" -f testkey
Använd alltid RSA-nyckel så blir ditt liv enklare. Halsskäggen på OpenSSH har bestämt att RSA är bra, så har du några synpunkter är det bara att ta det med dem direkt.
Efter att ha skrivit in lösenord så finns det nu två filer, testkey och testkey.pub som ser ut och har formatet något i stil med:
Heja-Anders:a anders$ cat testkey -----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAwi9vjrZHgyk89gT94w5mKsgkBhtvMz0GGtfIYjdWnIpRyrs7 bxQNx70Y6rRCP6wg/augpMgkWv/4b5KW4GDxu/tFPmx1V5EiamZO1DtRccS+dDGA Rxu+1vYn3vOuS3U72Kl1CVYdvwHN3RTrbtC46KqYFEeOQVIM9QDcC6UzoEMNdikT NM7xN/rirFk3zrxmtWpS9JDFuL6YS8TR5PM2LSzim7zoE0YdhLTgm5U/Pvjn+6mF t1Zdzgfe9aVAVMJbkgoVEi3X4MoIVnNXdQoKW8TMj1luq5NdiADsyWxovbZHQpjb wM95tJ9Y7BjfJxteI9OnOtzhBAYX3viUGIKZKwIDAQABAoIBAQCsmNMUSwoXF7Fa jqdHiMXgotH6J6pYJZZmh4NRYRR3wS3f/zldirqQ3Y/nFV+JDqqoLkN0E3zU8Y1V RjsaprBWQImUaXyG37ZyUgsg8rR6ZcBOsKzvB0dB87sOnRM/eK0/76baLJP18VmU dwKoFZc1HmRcKhnUD2T648+x/h18BG6u5B3F0M2WCkvF4SbpBphlRCZfqVKOMyac r9MNgAREU7FeIm6jakteLI4jBvYIS4v095sWRaPOqQbCrOZyC0PbS27MPmJr8uGw qAJ45ZeG6GnpfD3x8G1tlPiZs37a8GsahxeAOLxl0rsk0eBy8PqauTyR+JAaLpmj lSGdKHMBAoGBAPhB02PnJYBPR3cjlfJZvOulDQ2r/cSDj9F6j2Ail9bqavGlyOCV YPtClsZro1diHxbljz4N9EPPCIMH5Xk7mngUrllQL/8ubuTywznKcOi8MCWb4cuy 1oMSuzKCDbHk6idwBYit79zeDzhIyfBuW2/kKGx663karLdV2ANH/LWrAoGBAMg9 4Yupe9fvtgboA/RcBk7vxTIJA5JOxlgs0yAo9h821tFZkypALxXsqnqTR5PCPync 6BZD0jh+l3pcA/iNizzCHiGoDGYne/Siq7h1pS8xNefv4EmYJLED7MxwfvBNXzeb eRMLfT3fltxFOHO51nb0MHbuT8mqZTIHg10eFyqBAoGBAJn5+erUyuWyRlkWsUIH dq2RSW9ZZaQlFWaP5a1yx0p9SqdmdBkXjXdJ7cpTqJPiP/Yrm5SZgw8rsdPTafiv hzdDXH/4xEw5uH44M+38KduwHQy2im2VFodlbsX89BGKMdEUIdqMR2FuOXJncxi0 2fGkSY4/Dx2l9cogbEJcu9jRAoGBAKx32A8R4HAhsDeMmPNcW7abf85Twza+EMob eZDmlu5VrnrMWxv2Algw6rj+p5TVps+ozGF48tTj/BZQsL7hMv8W9xroAh3ufi47 +gm7kpXuHc7yZc0ddOTeS5PehQb2rT9Y8tR7fdjP/sEkAbZzZww30JJvOlupHtYT cIrAgxWBAoGAXBnDPBu6Vf1f67aSoD3anWmPdNA7FcgWn4BHO2U43l5KHxLOAI4X LBt8nIKdaxp5YArkHGL+aOLUIy+19eOD/iJPDJnKFzT4Oyj7M/RPgozK+7If75mF NUkLP3xvBqHkzn1HObLnQQW3DMUqjIqo9bi7kZrBZeqxhjxQU9XASBk= -----END RSA PRIVATE KEY-----
och:
Heja-Anders:a anders$ cat testkey.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCL2+OtkeDKTz2BP3jDmYqyCQGG28zPQYa18hiN1acilHKuztvFA3HvRjqtEI/rCD9q6CkyCRa//hvkpbgYPG7+0U+bHVXkSJqZk7UO1FxxL50MYBHG77W9ife865LdTvYqXUJVh2/Ac3dFOtu0LjoqpgUR45BUgz1ANwLpTOgQw12KRM0zvE3+uKsWTfOvGa1alL0kMW4vphLxNHk8zYtLOKbvOgTRh2EtOCblT8++Of7qYW3Vl3OB971pUBUwluSChUSLdfgyghWc1d1CgpbxMyPWW6rk12IAOzJbGi9tkdCmNvAz3m0n1jsGN8nG14j06c63OEEBhfe+JQYgpkr Testnyckel
Du kan nu kopiera testkey.pub direkt till din ~/.ssh/authorized_keys-fil om du vill kunna använda den privata nyckeln för att logga in.
För att kolla fingerprint och att verifiera att den publika nyckeln verkligen är i rätt format kan man köra:
Heja-Anders:a anders$ ssh-keygen -l -f testkey.pub 2048 SHA256:IIk8dlnG5DpAjppGXGExtcieMqxLgLMsXlh6y4/dGxs Testnyckel (RSA)
Om du har tappat bort den publika nyckeln kan du använda den privata för att återskapa den publika nyckeln:
Heja-Anders:a anders$ ssh-keygen -y -f testkey ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCL2+OtkeDKTz2BP3jDmYqyCQGG28zPQYa18hiN1acilHKuztvFA3HvRjqtEI/rCD9q6CkyCRa//hvkpbgYPG7+0U+bHVXkSJqZk7UO1FxxL50MYBHG77W9ife865LdTvYqXUJVh2/Ac3dFOtu0LjoqpgUR45BUgz1ANwLpTOgQw12KRM0zvE3+uKsWTfOvGa1alL0kMW4vphLxNHk8zYtLOKbvOgTRh2EtOCblT8++Of7qYW3Vl3OB971pUBUwluSChUSLdfgyghWc1d1CgpbxMyPWW6rk12IAOzJbGi9tkdCmNvAz3m0n1jsGN8nG14j06c63OEEBhfe+JQYgpkr
SSH2-formatet
Många kommersiella SSH-implementationer använder istället ett SSH2-format (RFC 4716). Om du behöver exportera din publika nyckel kan du skiva:
Heja-Anders:a anders$ ssh-keygen -e -f testkey ---- BEGIN SSH2 PUBLIC KEY ---- Comment: "2048-bit RSA, converted by anders@Heja-Anders from OpenSSH" AAAAB3NzaC1yc2EAAAADAQABAAABAQDCL2+OtkeDKTz2BP3jDmYqyCQGG28zPQYa18hiN1 acilHKuztvFA3HvRjqtEI/rCD9q6CkyCRa//hvkpbgYPG7+0U+bHVXkSJqZk7UO1FxxL50 MYBHG77W9ife865LdTvYqXUJVh2/Ac3dFOtu0LjoqpgUR45BUgz1ANwLpTOgQw12KRM0zv E3+uKsWTfOvGa1alL0kMW4vphLxNHk8zYtLOKbvOgTRh2EtOCblT8++Of7qYW3Vl3OB971 pUBUwluSChUSLdfgyghWc1d1CgpbxMyPWW6rk12IAOzJbGi9tkdCmNvAz3m0n1jsGN8nG1 4j06c63OEEBhfe+JQYgpkr ---- END SSH2 PUBLIC KEY ----
Om det istället är tvärtom, att du har en SSH2-nyckel du vill lägga in på din server så måste du först konvertera nyckeln så att OpenSSH kan tolka den.
För att konvertera den publika SSH2-nyckeln till openssh-format, måste vi istället skriva:
Heja-Anders:a anders$ ssh-keygen -i -f testkey.ssh2 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCL2+OtkeDKTz2BP3jDmYqyCQGG28zPQYa18hiN1acilHKuztvFA3HvRjqtEI/rCD9q6CkyCRa//hvkpbgYPG7+0U+bHVXkSJqZk7UO1FxxL50MYBHG77W9ife865LdTvYqXUJVh2/Ac3dFOtu0LjoqpgUR45BUgz1ANwLpTOgQw12KRM0zvE3+uKsWTfOvGa1alL0kMW4vphLxNHk8zYtLOKbvOgTRh2EtOCblT8++Of7qYW3Vl3OB971pUBUwluSChUSLdfgyghWc1d1CgpbxMyPWW6rk12IAOzJbGi9tkdCmNvAz3m0n1jsGN8nG14j06c63OEEBhfe+JQYgpkr
Putty-format
Ganska krångligt, eller hur? Det blir inte bättre av att Putty, som är en bra SSH-terminal för bl.a. Windows, sparar sina nycklar i ett eget format.
Ett nyckelpar sparat med Putty ser ut ungefär så här:
root@vps-nnnnn:~# cat putty_test_key PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: rsa-key-20110705 Public-Lines: 4 AAAAB3NzaC1yc2EAAAABJQAAAIEAlhgVdtuFmGPWqSv9Km+WnI2k0OI06ou4z7bK PvkoUo3+qGyUYdcsSH+MwBaHws85eZ0mXbfMonhU1XPfusQXjJUYRrWl35jIFDYp thIhtuxr0lAmKQE3TYdjmrItIl5ycPXwWfVD0PNqXVhxGdxenNFI9nIZGaVMfxzT wdC+vZk= Private-Lines: 8 AAAAgCBz6PcatRoHv7Xf/2MfC87ShIAw6NjEQ6KIYxSI5h+v/7W2nJ+IeEcG0lML ylOibUq6Mc8S+9AaBIEtz4JT6WosTQEGApX5AeNPnS2Cif5/XtE+y0Pv0d33lDjT CQ8/dhsIhY/Lrpr7Vg+QgP0NCle0ve2Jj0WVQTvc3eXgE6ZNAAAAQQDJvpxMWbbW JaDJnxLx8z/qZMLFWyiRtfjJ55fRoKBrjt98MFGYoy5gvUza5gjWnYUfWklJDcwr AHNnyXDgUAobAAAAQQC+dYWtgDMi+bgcU7CkcD308IfIXuY6VrIkbnwQgpttYVRy Vk9OmRXIPwiBNn6pcUIOAEKM1Kun/lbXiAnEE9JbAAAAQE0xHvmOZiGJQzGTiqhz eS3V/VMtKwBm6VnuY1Kmz8JA+1A7yE0vl53+c5W9TGeeeCbiS6QM5dQ7r7WwiVCI gN4= Private-MAC: 4ab43bff452e8902e53432288888bfa1d394543f
Naturligtvis kan man på egen hand klippa och klistra ut nyckeln, men för Ubuntu finns ett paket som heter putty-tools.
apt-get install putty-tools
För att få ut den publika nyckeln från Putty-nyckeln kan vi skriva:
root@vps-nnnnn:~# puttygen putty_test_key -L ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAlhgVdtuFmGPWqSv9Km+WnI2k0OI06ou4z7bKPvkoUo3+qGyUYdcsSH+MwBaHws85eZ0mXbfMonhU1XPfusQXjJUYRrWl35jIFDYpthIhtuxr0lAmKQE3TYdjmrItIl5ycPXwWfVD0PNqXVhxGdxenNFI9nIZGaVMfxzTwdC+vZk= rsa-key-20110705
Om vi istället vill plocka fram den privata, skriver vi så här:
root@vps-nnnnn:~# puttygen putty_test_key -O private-openssh -o putty_test_priv_key && cat putty_test_priv_key -----BEGIN RSA PRIVATE KEY----- MIICWgIBAAKBgQCWGBV224WYY9apK/0qb5acjaTQ4jTqi7jPtso++ShSjf6obJRh 1yxIf4zAFofCzzl5nSZdt8yieFTVc9+6xBeMlRhGtaXfmMgUNim2EiG27GvSUCYp ATdNh2Oasi0iXnJw9fBZ9UPQ82pdWHEZ3F6c0Uj2chkZpUx/HNPB0L69mQIBJQKB gCBz6PcatRoHv7Xf/2MfC87ShIAw6NjEQ6KIYxSI5h+v/7W2nJ+IeEcG0lMLylOi bUq6Mc8S+9AaBIEtz4JT6WosTQEGApX5AeNPnS2Cif5/XtE+y0Pv0d33lDjTCQ8/ dhsIhY/Lrpr7Vg+QgP0NCle0ve2Jj0WVQTvc3eXgE6ZNAkEAyb6cTFm21iWgyZ8S 8fM/6mTCxVsokbX4yeeX0aCga47ffDBRmKMuYL1M2uYI1p2FH1pJSQ3MKwBzZ8lw 4FAKGwJBAL51ha2AMyL5uBxTsKRwPfTwh8he5jpWsiRufBCCm21hVHJWT06ZFcg/ CIE2fqlxQg4AQozUq6f+VteICcQT0lsCQH1oplj5f34zEOwI8BncZgBoJgv6ZVOo eA7OO8d/hlCywkZHjKr9pzU3ZyBJziSLbm1veanz0fE3oa84B+ViL8sCQQCK+9BA VqHbQJsblwRcUegFxEdos/Qcu84aldAnuUD8ynvku4X7FcPJehr2gbZf+LOpWiK5 y5/bdGjieAcgYX3TAkBNMR75jmYhiUMxk4qoc3kt1f1TLSsAZulZ7mNSps/CQPtQ O8hNL5ed/nOVvUxnnngm4kukDOXUO6+1sIlQiIDe -----END RSA PRIVATE KEY-----
PKCS8-format
Om din nyckel däremot ser ut så här
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwi9vjrZHgyk89gT94w5m KsgkBhtvMz0GGtfIYjdWnIpRyrs7bxQNx70Y6rRCP6wg/augpMgkWv/4b5KW4GDx u/tFPmx1V5EiamZO1DtRccS+dDGARxu+1vYn3vOuS3U72Kl1CVYdvwHN3RTrbtC4 6KqYFEeOQVIM9QDcC6UzoEMNdikTNM7xN/rirFk3zrxmtWpS9JDFuL6YS8TR5PM2 LSzim7zoE0YdhLTgm5U/Pvjn+6mFt1Zdzgfe9aVAVMJbkgoVEi3X4MoIVnNXdQoK W8TMj1luq5NdiADsyWxovbZHQpjbwM95tJ9Y7BjfJxteI9OnOtzhBAYX3viUGIKZ KwIDAQAB -----END PUBLIC KEY-----
Då har du en nyckel i PKCS8-format.
Konvertera den till OpenSSH-format med följande kommando:
Heja-Anders:a anders$ ssh-keygen -i -mPKCS8 -f testkey.pkcs8.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCL2+OtkeDKTz2BP3jDmYqyCQGG28zPQYa18hiN1acilHKuztvFA3HvRjqtEI/rCD9q6CkyCRa//hvkpbgYPG7+0U+bHVXkSJqZk7UO1FxxL50MYBHG77W9ife865LdTvYqXUJVh2/Ac3dFOtu0LjoqpgUR45BUgz1ANwLpTOgQw12KRM0zvE3+uKsWTfOvGa1alL0kMW4vphLxNHk8zYtLOKbvOgTRh2EtOCblT8++Of7qYW3Vl3OB971pUBUwluSChUSLdfgyghWc1d1CgpbxMyPWW6rk12IAOzJbGi9tkdCmNvAz3m0n1jsGN8nG14j06c63OEEBhfe+JQYgpkr