Fedora People

"Fedora People" est un espace de stockage en ligne à disposition de tous les contributeurs du Projet Fedora. Il ne sert qu'à héberger des fichiers, et éventuellement quelques pages HTML. Il n'y a pas d'interface web de gestion, tout se fait à travers SSH.

casper@vulcain:~ % ssh fedorapeople
[fantom@people02 ~][PROD]$

Pour mettre en ligne un fichier, on peut utiliser la commande rsync :

casper@vulcain:~ % rsync sysinfo-vulcain.tar.xz fedorapeople:public_html/

Dans le cas de plusieurs fichiers, on peut passer par sftp :

casper@vulcain:~ % sftp fedorapeople
Connected to fedorapeople.
sftp> mkdir tmp
sftp> cd tmp
sftp> put sysinfo-vulcain.tar.xz
Uploading sysinfo-vulcain.tar.xz to /home/fedora/fantom/tmp/sysinfo-vulcain.tar.xz
sysinfo-vulcain.tar.xz          100%   37MB   5.1MB/s   00:07    
sftp> ls
sysinfo-vulcain.tar.xz           
sftp> pwd
Remote working directory: /home/fedora/fantom/tmp
sftp>

Puisque l'on se connecte au serveur avec SSH, je me suis demandé quels étaient les moyens pour vérifier que l'on se connecte à la bonne machine. L'empreinte de la clé publique n'est pas écrite sur la page wiki, elle est publiée nul-part. Il faut donc passer par un autre moyen de vérification.

La zone DNS du domaine fedorapeople.org est couverte par le DNSSEC, elle contient un enregistrement pour vérifier automatiquement une connexion SSH initiale.

Si on lance la commande sans option, alors la commande ssh ne va pas vérifier :

% ssh fantom@fedorapeople.org
The authenticity of host 'fedorapeople.org (152.19.134.199)' can't be established.
ED25519 key fingerprint is SHA256:DTUrA3w9TcKunUSLEPoFK4uAqrdHKdIv7QoiPQjF1b4.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Avec l'option VerifyHostkeyDNS, alors la commande ssh va effectuer la vérification :

% ssh -o VerifyHostkeyDNS=yes fantom@fedorapeople.org
The authenticity of host 'fedorapeople.org (152.19.134.199)' can't be established.
ED25519 key fingerprint is SHA256:DTUrA3w9TcKunUSLEPoFK4uAqrdHKdIv7QoiPQjF1b4.
Matching host key fingerprint found in DNS.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

La ligne suivante indique que l'empreinte correspond à l'enregistrement dans la zone DNS de fedorapeople.org :

Matching host key fingerprint found in DNS.

À partir de là, on peut comparer la clé publique avec l'ancienne clé publique stockée sur notre disque dur. Pour faire le comparatif, je l'avais stocké dans un fichier séparé :

$ grep fedorapeople.org .ssh/known_hosts 
fedorapeople.org ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINtdhfnfJhLHuTT6z8mr0GRCKFSABLt/PTtNHsmeh1nv
$ grep fedorapeople.org .ssh/known_hosts*|awk '{ print $3 }'
AAAAC3NzaC1lZDI1NTE5AAAAINtdhfnfJhLHuTT6z8mr0GRCKFSABLt/PTtNHsmeh1nv
AAAAC3NzaC1lZDI1NTE5AAAAINtdhfnfJhLHuTT6z8mr0GRCKFSABLt/PTtNHsmeh1nv

La clé publique de ce serveur n'a jamais changé. J'ai pensé qu'il était utile de faire une vérification approfondie au moins une fois.

Référence : Wiki Fedora Project

Note au sujet du client SSH

Il est possible de raccourcir les commandes SSH pour les rendre plus implicites et agréable à lire. Pour passer d'une commande très longue comme :

$ ssh -o VerifyHostkeyDNS=yes fantom@fedorapeople.org

à une commande très courte :

$ ssh fedorapeople

Il faut ajouter une entrée dans le fichier ~/.ssh/config :

Host fedorapeople
    VerifyHostKeyDNS yes
    User fantom
    HostName fedorapeople.org
    Port 22
    UserKnownHostsFile ~/.ssh/known_hosts-fedorapeople.org

Pagure

La forge Pagure est utilisée pour héberger les sources des paquets Fedora. Tous les packagers du Projet Fedora ont des interractions avec ce serveur. Lorsqu'on utilise son intereface web, on passe par l'URL "src.fedoraproject.org". Lorsqu'on passe par la ligne de commande, la commande fedpkg se connecte par SSH au serveur "pkgs.fedoraproject.org". Les adresses sont différentes, mais il s'agit, en fait, de la même machine.

En tant que packager, je me suis posé une question : Comment puis-je vérifier manuellement que fedpkg se connecte à la bonne machine ?

Avec la commande grep, on peut extraire la clé publique stockée sur notre disque dur :

$ grep pkgs.fedoraproject.org .ssh/known_hosts

Cette clé publique n'a jamais changé. Si elle est bonne, alors il y a zéro problème. On peut ensuite la comparer avec la clé publique affichée sur la page web de la forge. Depuis la page d'accueil, il faut aller tout en bas (vraiment tout en bas), puis cliquer sur "SSH Hostkey/Fingerprint".

link-ssh-info.png

L'URL directe est https://src.fedoraproject.org/ssh_info. Normalement la ligne RSA Pubkey doit correspondre au retour de la commande grep.

Il est possible de stocker la clé publique dans un fichier séparé. J'ai l'habitude de faire un fichier par machine, car les machines ont souvent plusieurs noms DNS. Ça permet aussi de réserver le fichier par défaut (~/.ssh/known_hosts) aux machines "pas habituelles", qui ne sont pas listées dans mon fichier de configuration SSH. Il suffit d'ajouter dans le fichier ~/.ssh/config ce qui suit :

Host pkgs.fedoraproject.org
    User FAS_here
    HostName pkgs.fedoraproject.org
    Port 22
    UserKnownHostsFile ~/.ssh/known_hosts-pkgs.fedoraproject.org

La page web fournie aussi RSA Sha256, qui est intéressante lorsqu'on se connecte à la forge pour la première fois. Par exemple :

$ fedpkg clone libstrophe
Clonage dans 'libstrophe'...
The authenticity of host 'pkgs.fedoraproject.org (38.145.60.17)' can't be established.
RSA key fingerprint is SHA256:Q12OTyTeOHWlS54dTzy2BNu7wB8UKNf18+7WHIDsORc.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Ici, on peut voir que l'empreinte SHA256 est concordante.