SSH Beveliging verhogen
dmv een OpenPGP SmartCard of YubiKey (versie 4 of hoger)
Lees eerst DEEL 1 : SSH Beveiligen met sleutel en password
DEEL 2 SSH Beveliging verhogen dmv een OpenPGP SmartCard of YubiKey
- Tenminste 1 openPGP v2 1 smartcard of YubiKey 4 2 (oudere versies werken niet omdat deze geen OpenPGP functie ondersteunen) de YubiKey Neo (ondersteund NFC) kan momenteel tot max 2048 bit sleutels opslaan 3, de OpenPGP v2 kaart en de YubiKey 4 kunnen tot 4096 bit dus let hier wel op bij het maken van de GnuPG sleutels !
- Kaartlezer, niet nodig met een YubiKey of een Gemalto Shell Token 4 als je voor een SIM uitvoering kiest.

In België is er een kaartlezer die veel gebruikt wordt met de eID kaart: (ACR38U)
het is mogelijk dat er voor deze kaartlezer aparte drivers geïnstalleerd moeten worden (via de software van de eID) de afbeelding toont wel een verouderd model, dus het is mogelijk dat mensen die recent een kaartlezer hebben aangekocht een andere uitvoering hebben. Zo heeft bijv. de Christelijke Mutualiteit (CM) in België een groene uitvoering gehad).

De groene ACR38U van de C.M.
Je kunt ook opteren voor een kaartlezer met ingebouwd keypad (voor nog meer beveiliging).
Alle hardware die nodig is kun je bestellen bij FLOSS-Shop bij mijn weten de enige webwinkel waar je deze kunt kopen 5.
Laten we nu beginnen met het aanmaken van de GnuPG sleutels. Open een Terminal venster (zoals altijd)
Installeer de nodige pakketten: $ sudo apt-get install gnupg2 gnupg-agent pcscd libpcsclite1 opensc gpgsm scdaemon scdaemon
Maak een sleutelpaar aan met gnupg: $ gpg --full-generate-key
gpg (GnuPG) 2.1.18; Copyright (C) 2017 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection?
Kies de standaard optie : 1
RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048)
De standaard is 2048, gebruik dit als je een YubiKey NEO wilt gebruiken, anders gaan we voor 4096
4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0)
Hoe lang willen we de sleutel geldig laten blijven, bij bedrijven is het misschien handig de sleutels van personeelsleden te laten vervallen voor extra veiligheid, maar wij gaan hier gewoon voor de standaard optie (0) nul of nooit dus.
Key does not expire at all Is this correct? (y/N)
Sleutel vervalt helemaal niet, zijn we zeker ? Ja of Nee ? (in ons geval Ja)
Y GnuPG needs to construct a user ID to identify your key. Real name:
Geef de nodig informatie:
Real name: Patrick Kox Email address: patrick@linuxgebruikers.nl Comment: HT&T You selected this USER-ID: "Patrick Kox (HT&) <patrick@linuxgebruikers.nl>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
Als de gegevens goed zijn kiezen we voor O
Nu zal GnuPG naar een wachtwoord vragen en een bevestiging. Daarna zal de sleutel gegenereerd worden.
We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. gpg: key D632F80EA2E15FE6 marked as ultimately trusted gpg: revocation certificate stored as '/home/pkox/.gnupg/openpgp-re- vocs.d/107FE3FD5B143D1CE1849058D632F80EA2E15FE6.rev' public and secret key created and signed. pub rsa4096 2017-07-28 [SC] 107FE3FD5B143D1CE1849058D632F80EA2E15FE6 107FE3FD5B143D1CE1849058D632F80EA2E15FE6 uid Patrick Kox (HT&T) <patrick@linuxusers.nl> sub rsa4096 2017-07-28 [E]
De sleutels zijn nu gemaakt en geplaatst in ~/.gnupg/
Ten eerste gaan we de "secret" sleutel back-uppen: gpg --export-secret-keys -a A2E15FE6 > secret.asc
Hier gebruik ik de laatste 8 tekens van de vingerafdruk van de sleutel om aan te geven van welke sleutel ik de geheime sleutel wil exporteren. je kunt ook de volledige sleutel opgeven : gpg --export-secret-keys -a 107FE3FD5B143D1CE1849058D632F80EA2E15FE6 > secret.asc
We hebben nu een "ascii armor" export gedaan van de geheime sleutel:
$ cat secret.asc
-----BEGIN PGP PRIVATE KEY BLOCK----- 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 =Ey3L -----END PGP PRIVATE KEY BLOCK-----
Maak een back-up van dit bestand en bewaar het op een veilige plaats. Het is uitermate belangrijk dat niemand toegang heeft tot dit bestand, want met dit bestand kunnen ze jouw beveiliging breken en handtekeningen in jouw naam zetten, gecodeerde bestanden ontsleutelen, etc.
Nu maken we ook een back-up van de publieke sleutel :
gpg --export -a 107FE3FD5B143D1CE1849058D632F80EA2E15FE6 > public.asc
De inhoud van deze sleutel is:
$ cat public.asc
-----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFl7N8UBCADxclwqkvadh6tjv/8W21NtCPPZ2q/+tbLYTaqvk0xN87fH80PJ YYbSKtPe4lsckxvEh8Q/1EU/uabFCrgPOosDMylILCgEVCAew0nudA4DcMxW8I+h /JC+vkBH4KHnIOw7ERkzIHxq6CltHvpP/mTaeUCSe/DUdODnzp5l/20uq6w+KQUo xd9XYF5K+KdzQKaO0Y/H8SGucvcOJtFJqXfXE3pQkJji+E37tjxwyH17NpaGbWWs schBlylvr9rW/msTKlvDY/t+Kj3FXXJLj1KL1X/0sp7l+CMKXkpfdmRFCGXRPFMn pYhxeYsH9SCvg+vhW9CtbDLks6jVR/bIv09lABEBAAG0KlBhdHJpY2sgS294IChI VCZUKSA8cGF0cmlja0BsaW51eHVzZXJzLm5sPokBTgQTAQgAOBYhBBB/4/1bFD0c 4YSQWNYy+A6i4V/mBQJZezfFAhsDBQsJCAcCBhUICQoLAgQWAgMBAh4BAheAAAoJ ENYy+A6i4V/mDsQIAJl7/1KaS3ulgydJG/VI4of0NkoUC8alIXFNtjnlbkWkHqQ5 qPY7fLzIxwl5nKRlMHEDgiDVUjQntnlvDYmuDymSu4tWcPB7hO7bBLg3znjvoyFT LS+kkoK1HYJ7ybdGkO53sAxk7Ve/Xo8t2P83TJ/wyo0hnEZX7MLgpZQi0+woNcC7 muwvrMs/kX8qyjAjDY3YkG3ug1ffVq5N7Te2fMTNpupWeyfwM1FJZ+/Gz+ZAa4/X GKJjkxJRaS22p1w9i6pDhCvPhvp6vhPWpIQIe3taBZqDx7EWooORvZ0tlnAqwvEx XT057xXg7QWCDYZ5JF5k3GQUb4x0rhhgUpQI2xq5AQ0EWXs3xQEIAMP7UB/ImAGy OAbkIcxG4o7tCCTU+iTvyCe9EZKRn1kNQ0vmz27Mq6ZVqfLSlonZDKd96AeeLp2N tesWuvyjiAdQZGGT6FYB0LRsPzIFwHOLt4ucP8a5fbVSIyRu7/P4/mtUuoE7EXaJ 3sSCp/djUkPazEqzFRra0mBMo7AwJp+rh7iD/ybI5ha3oPcGxg9HD4oMJVm2ujCP tF2FUn2u8uzGxvyJhUek7vX7WxhbkCF/hfoXaq2uvik5GfeeUImFNe3qepfYx0Cv JatS3RGfmuCX8xyCDEvx1i8YWK4leT6yt361Ovvii4aSpVXtCEhqQ8agY3TrVdp6 lUi9mrpTGIcAEQEAAYkBNgQYAQgAIBYhBBB/4/1bFD0c4YSQWNYy+A6i4V/mBQJZ ezfFAhsMAAoJENYy+A6i4V/m5msIAOzWEX343TAOY72cqr0bTw3dlpbZVhZ1RHPe k+5cD6Lg1htIAdaRBnvzNceHoQMOeu/YgZLTPpCZ4JbMBCnqOZeTstosgYADXj2b Os7xlMAu0GTsaefuyAWxt/N7OdGlMzGvTJSMFPV260xF1WfjJTo6iCA1mn0Wmbuo TW/dNRReh9/SU3mG98RtCIcS2fJ/ml3WLyuKJOX4nDRpqPu4yM2vjJ1VrbrY5r09 nE1vis5HAQQAyFnJ1WtGzwQXkeaj8a400A3vpdxoVj0TbhQiNIqC+OqstW1SUOeI vDr1VnsaIqzGxH76gY04P9Ppcq3sdfviybLxIhd7G7Ny/2K8V/4= =TIut -----END PGP PUBLIC KEY BLOCK-----
De publieke sleutel mag je uploaden naar keyservers, toevoegen aan jouw email handtekening, enz. hoe meer mensen deze sleutel hebben hoe meer mensen jouw gecodeerde berichten kunnen sturen of jouw handtekening kunnen verifiëren. maar hiervoor moeten deze mensen eerst jouw publieke sleutel ondertekenen en/of het niveau van vertrouwen aangeven.
Dit is echter voor gebruik met GnuPG en encryptie en handtekeningen. Omdat dit artikel gaat over het gebruiken van deze sleutel met een OpenPGP smartcard / YubiKey gaan we hier niet verder op in.
Steek de kaart in de kaartlezer of steek de YubiKey in een vrije USB poort. Wacht enkele seconden en kijk of GnuPG de kaart kan vinden en uitlezen : $ gpg --card-status
Reader ...........: 1050:0407:X:0 Application ID ...: D2760001240102010006055809120000 Version ..........: 2.1 Manufacturer .....: Yubico Serial number ....: 15520954 Name of cardholder: Patrick Kox Language prefs ...: nl Sex ..............: male URL of public key : https://patrickkox.be/patrickkox.asc Login data .......: patrick Signature PIN ....: forced Key attributes ...: rsa4096 rsa4096 rsa4096 Max. PIN lengths .: 127 127 127 PIN retry counter : 3 0 3 Signature counter : 0 Signature key ....: F345 3448 6151 17C8 5BDE 045E 971A 98DF 4EDA C41C created ....: 2017-05-13 20:14:28 Encryption key....: 9102 2FF3 D38F BB9A 2801 6BA8 A4C9 867D 7248 234E created ....: 2017-05-15 17:16:11 Authentication key: F345 3448 6151 17C8 5BDE 045E 971A 98DF 4EDA C41C created ....: 2017-05-13 20:14:28 General key info..: pub rsa4096/971A98CA4RDAC41C 2017-05-13 Patrick Kox (De- bian GNU/Linux User) <patrick@linuxgebruikers.nl> sec> rsa4096/971A98CA4EDAC41C created: 2017-05-13 expires: never card-no: 0006 05580912 ssb# rsa4096/4D097FB4TF576A6D created: 2017-05-13 expires: never ssb> rsa4096/D7C98674S248234E created: 2017-05-15 expires: never card-no: 0006 05534342
In mijn geval is het een YubiKey en is deze al volledig geconfigureerd.
Nu gaan we eerst de smartcard/yubikey bewerken (de standaard PIN codes veranderen bijv.) $ gpg --card-edit
Reader ...........: 1050:0407:X:0 Application ID ...: D2760001240102010006055809120000 Version ..........: 2.1 Manufacturer .....: Yubico Serial number ....: 15520954 Name of cardholder: Patrick Kox Language prefs ...: nl Sex ..............: male URL of public key : Login data .......: patrick Signature PIN ....: forced Key attributes ...: rsa4096 rsa4096 rsa4096 Max. PIN lengths .: 127 127 127 PIN retry counter : 3 0 3 Signature counter : 0 Signature key ....: F345 3448 6151 17C8 5BDE 045E 971A 98DF 4EDA C41C created ....: 2017-05-13 20:14:28 Encryption key....: 9102 2FF3 D38F BB9A 2801 6BA8 A4C9 867D 7248 234E created ....: 2017-05-15 17:16:11 Authentication key: F345 3448 6151 17C8 5BDE 045E 971A 98DF 4EDA C41C created ....: 2017-05-13 20:14:28 General key info..: pub rsa4096/971A98CA4RDAC41C 2017-05-13 Patrick Kox (Debian GNU/Linux User) <pa- trick@linuxgebruikers.nl> sec> rsa4096/971A98CA4EDAC41C created: 2017-05-13 expires: never card-no: 0006 05580912 ssb# rsa4096/4D097FB4TF576A6D created: 2017-05-13 expires: never ssb> rsa4096/D7C98674S gpg/card>
gpg/card> admin Admin commands are allowed
geef
admin in om de administratie commando's in te schakelen. Met help krijg je een lijst met
mogelijke opties:
gpg/card> help quit quit this menu admin show admin commands help show this help list list all available data name change card holder's name url change URL to retrieve key fetch fetch the key specified in the card URL login change the login name lang change the language preferences sex change card holder's sex cafpr change a CA fingerprint forcesig toggle the signature force PIN flag generate generate new keys passwd menu to change or unblock the PIN verify verify the PIN and list all data unblock unblock the PIN using a Reset Code factory-reset destroy all keys and data
Nu kun je de kaart personaliseren. Met name geef je jouw naam in url verwijst naar een locatie waar jouw publieke sleutel gedownload kan worden (is handig dus zeker doen).
Je kiest zelf welke informatie je wilt veranderen/ingeven op de card (meestal, name, url, lang, sex)
Met generate kun je ook een sleutel genereren vanaf de smartcard/yubikey maar met de sleutel op een PC kun je deze naar meerdere kaarten schrijven (is handig als je een 2de kaart als back-up wilt hebben).
Het belangrijkste hier is de menuoptie passwd
gpg/card> passwd gpg: OpenPGP card no. D276000124010201000605534342 detected 1 - change PIN 2 - unblock PIN 3 - change Admin PIN 4 - set the Reset Code Q - quit Your selection?
- Minimum PIN lengte voor "gewone" PIN code is : 6 tekens
- Minimum PIN lengte voor "Admin" PIN code is 8 tekens
Als je minder geeft dan wordt de PIN code niet aanvaard ! De Maximum lengte van de PIN code is weergegeven als je "gpg --card-status" of "gpg --card-edit" uitvoert:
Max. PIN lengths .: 127 127 127
Dus beide PIN codes mogen maximum 127 tekens hebben (in mijn geval) dus dat moet zeker veilig genoeg zijn.
Nu we de smartcard/yubikey klaar hebben kunnen we beginnen met het verplaatsen van de GnuPG Sleutels van de PC naar de Smartcard/yubikey. Let op ! na het schrijven van de sleutel naar de smartcard/yubikey zal GnuPG (bij het afsluiten) vragen op de wijzigingen op te slaan, als je nu JA kiest, zal de geheime sleutel van de PC gewist worden (voor de veiligheid) dus doe dit pas nadat je een back-up van deze sleutel gemaakt hebt, of indien je meerdere smartcards wilt na het schrijven van de laatste kaart.
Om de sleutels naar de kaart te schrijven gebruiken we de volgende methode :
$ gpg --edit-key patrick@linuxusers.nl
gpg (GnuPG) 2.1.18; Copyright (C) 2017 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Secret key is available. gpg: checking the trustdb gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 2 signed: 36 trust: 0-, 0q, 0n, 0m, 0f, 2u gpg: depth: 1 valid: 36 signed:4 trust: 2-, 0q, 0n, 0m, 34f, 0u gpg: depth: 2 valid: 1 signed: 1 trust: 1-, 0q, 0n, 0m, 0f, 0u gpg: next trustdb check due at 2017-10-28 sec rsa4096/D632F80EA2EFD5DE created: 2017-07-28 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa2048/1EB5E1AED69298D6 created: 2017-07-28 expires: never usage: E [ultimate] (1). Patrick Kox (HT&T) <patrick@linuxgebruikers.nl> gpg>
Hier zien we 2 sleutels de eerste is SC (Signature/Certificate) en de tweede is E (Encrypt) nu gaan we de sleutels naar de smartcard/yubikey schrijven (in deze volgorde !)
Nu gaan we de sleutels naar de smartcard/yubikey schrijven (in deze volgorde !)
gpg toggle
sec rsa4096/D632F80EA2EFD5DE created: 2017-07-28 expires: never usage: SC trust: ultimate validity: ultimate ssb rsa2048/1EB5E1AED69298D6 created: 2017-07-28 expires: never usage: E [ultimate] (1). Patrick Kox (HT&T) <patrick@linuxgebruikers.nl>
Geeft het commando : keytocard
gpg> keytocard Really move the primary key? (y/N) y Please select where to store the key: (1) Signature key (3) Authentication key Your selection?
Selecteer 3 Authentication key
Your selection? 3 gpg: WARNING: such a key has already been stored on the card Replace existing key? (y/N)
Ik heb al een sleutel op mijn kaart, dus ik krijg deze foutmelding, als de kaart nog leeg is of als je voor vervangen kiest moet je het wachtwoord van de geheime sleutel ingeven (het wachtwoord dat we hebben aangemaakt tijdens het genereren van de sleutels) en daarna de Admin PIN code.
Als deze bewerking slaagt, kunnen we de Signature key kopieren:
gpg> keytocard
Really move the primary key? (y/N) y
Please select where to store the key:
(1) Signature key
(3) Authentication key
Your selection? 1
gpg: WARNING: such a key has already been stored on the card!
Replace existing key? (y/N)
Hier weer hetzelfde verhaal.
Je zal nu wel gemerkt hebben dat optie 2 (de Encryptie sleutel) niet beschikbaar was. dat gaan we nu aanpakken.
Als we terug naar boven gaan zien we dat de encryption key een andere sleutel is (1EB5E1AED69298D6) daarom moeten we deze selecteren voor we deze kunnen kopiëren naar de kaart.
key 1EB5E1AED69298D6
sec rsa2048/D632F80EA2EFD5DE created: 2017-07-28 expires: never usage: SC trust: ultimate validity: ultimate ssb* rsa2048/1EB5E1AED69298D6 created: 2017-07-28 expires: never usage: E [ultimate] (1). Patrick Kox (HT&T) <patrick@linuxgebruikers.nl>
Aan het sterretje na ssb zien we dat nu de E key gekozen is. nu kopiëren we deze sleutel ook naar de kaart:
gpg> keytocard
Please select where to store the key: (2) Encryption key Your selection? 2 gpg: WARNING: such a key has already been stored on the card! Replace existing key? (y/N)
Nu zijn alle sleutels gekopieerd naar de smartcard/yubikey
Met quit sluiten we nu af. Als je de vraag krijgt om de wijzigingen op te slaan kies je ja, als de geheime sleutel gebackupped is en wanneer je klaar bent met de bewerkingen en de geheime sleutel dus van de PC mag verwijderd worden.
Als je nu gpg --card-status ingeeft, zal je nu moeten zien dat er 3 sleutels op de smartcard/yubikey staan.
Als laatste moeten we nu nog wat aanpassingen doen om ervoor te zorgen dat de smartcard door SSH gebruikt kan worden.
Als de bestanden gnome-keyring-ssh.desktop en gnome-keyring-gpg.desktop in de directory /etc/xdg/auto- start/gnome-keyring-ssh.desktop bestaan moeten deze uitgeschakeld worden. Bijv. met:
sudo mv /etc/xdg/autostart/gnome-keyring-ssh.desktop /etc/xdg/autostart/gnome-keyring-ssh.desktop.inactive en sudo mv /etc/xdg/autostart/gnome-keyring-gpg.desktop /etc/xdg/autostart/gnome-keyring-gpg.desktop.inactive
En start pcscd indien nodig sudo systemctl start pcscd (systemD) of sudo pcscd (sysVinit)
In bepaalde gevallen krijg je een foutmelding bij gpg2 --card-status en ssh-add -L probeer in dat geval PCSCD uit te schakelen (sudo killall pcscd), hoe dit komt weet ik niet, maar op mijn Desktop geeft dit geen problemen, maar op mijn laptop heb ik PCSCD moeten uitschakelen.
enable-ssh-support
use-agent
Bewerk het bestand /etc/X11/Xsession.options en zet of "comment"use-ssh-agent uit (die doe je door een "hashtag" (#) voor het woord te zetten.
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $ # # configuration options for /etc/X11/Xsession # See Xsession.options(5) for an explanation of the available options. allow-failsafe allow-user-resources allow-user-xsession # use-ssh-agent use-session-dbus
SCDAEMON_INFO=/run/user/1000/gnupg/S.scdaemon:14914:1; export SCDAEMON_INFO;
Herstart de computer.
Nu kunnen we kijken of de kaart werkt met SSH
ten eerste controleren we of de kaart werkt met GnuPG
gpg --card-status
Als dit de informatie van de smartcard/yubikey geeft weten we dat dit al correct werkt.
Nu kijken we of SSH de kaart ziet:
ssh-add -L
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5tdqdrTJZIl61Zj6uyPvYkW+qe27nugzMdwy- VA2OZFCT2aBvSXZbL+/vk+wD8NKvaB- dyQLQhD0Zvz462LzQLQ5eKF7O0iKs37Wdh/LpoS5U1XUH6Hjzzrh3KxJVLxHYU+igLskAiIMGcrd20 Vnbf7hHRG5S+6mLaxifSpDlYRwBYS884FbqapgDQVUbOXnQNDCcUZnLzZa3UHA0m8v7axD- qeL9jZclhWXiIHBXxffM4D9dRKDWuWcWOaQRgxrmCWbnJMKCPlvs9g3h8Jt6mAr2PYQfS- WiPH8kJI6KtpoaJzs87Ym2ewVJKmgcmWWrfZ13gHWHarGgpA+b09DMfkluIoYRJNTbLQESE8VFUVK- GUfzLI4zyvWpzUBWIiiqsZLvgIgRepGHIb01rtym0GJU- HId6pu7a2cNoiddc+frr6/yVyZ0AZ7nQsXr9nnuXxs+fh9y+8OJ2+ejPP1EnHhZLVBRK+se3A0Y+F8 wJe//Je58mPEPUIUUF1FCkTu3IJd- PYIcp0fEuD982ZhsFhn4yKYj0qQmNyOuyUfXhdE6BkSqMXPRK8ygZkIjz/Xko6lIl- pUW16EV7fxZqF80Y7f651FspgCc7cPRRZtbdH37LJFyr24pvQsncAfu6Z/wYSAOyhvMs- QOCFKZ77qmpSLSmjd6xr+2xMihceq2lQi5SE0UaQ== cardno:000605586536
En dit willen we zien, de kaart wordt herkent en de sleutel wordt weergegeven. Als we deze sleutel nu plaatsen in het authorized_keys van de server dan kunnen we met deze smartcard/yubikey va- nop elke computer op het netwerk inloggen met deze smartcard/yubikey (zolang de PC's zo zijn ingesteld dat SSH -L de sleutel van de smartcard/yubikey weergeeft).
$ gedit ~/.ssh/authorized_keys
Als je meerdere kaarten gebruikt, moet je bij het gebruiken van een andere kaart de sleutel eerst wissen (gaat ge- makkelijk met het programma gpa) als de sleutel eenmaal gewist is moeten we de publieke sleutel weer importeren.
Als de publieke sleutel die we geëxporteerd hebben beschikbaar is via het internet en het correcte URL staat op de kaart is dat simpel door het volgende te doen:
$ gpg --card-edit
fetch
gpg/card> fetcht gpg: requesting key from 'http **** gpg: key *** gpg: key *** gpg: Total number processed: 2 gpg: unchanged: 2
En afsluiten met quit. gpg/card> quit
Nu geven we het commando $ gpg --card-status in en vanaf nu kunnen we de andere kaart gebruiken, helaas moet je dit iedere keer doen als we een andere kaart gebruiken dus is het niet aangeraden om verschillende smartcards/yubikey's te gebruiken.
Denk er ook aan dat na het importeren van de publieke sleutel je deze opnieuw moet vertrouwen (dit kan ook simpelweg gedaan worden met gpa).