Si vous voyez beaucoup de bannières publicitaires sur certains sites Web, vous savez que sans réseau privé virtuel (VPN), les pirates vont rapidement ravager votre ordinateur et brûler votre maison. Eh bien, cela semble être ce qu’ils impliquent. En réalité, cependant, il y a deux raisons principales pour lesquelles vous pourriez vouloir une connexion VPN. Vous pouvez bien sûr payer pour un service, mais si vous avez un accès ssh à un ordinateur quelque part sur l’Internet public, vous pouvez configurer votre propre service VPN sans frais supplémentaires.

L’idée de base est que vous vous connectez à un ordinateur distant sur un autre réseau et cela donne l’impression que tout votre trafic réseau est local sur ce réseau. Le premier cas est d’éviter ou d’améliorer la sécurité. Par exemple, vous souhaiterez peut-être imprimer sur une imprimante réseau sans exposer cette imprimante à l’Internet public. Pendant que vous êtes au café, vous pouvez VPN sur votre réseau et imprimer comme si vous étiez à un mètre de l’imprimante à votre bureau. Votre trafic sur le WiFi de la boutique sera également crypté.

La deuxième raison est de masquer votre position de fouille. Par exemple, si vous aimez regarder les vidéos de la BBC mais que vous vivez en Équateur, vous pouvez utiliser un VPN sur un réseau au Royaume-Uni pour que les vidéos ne soient pas bloquées. Si vos autorités locales surveillent et censurent votre Internet, vous voudrez peut-être également que votre trafic provienne d’ailleurs.

L’utilisation de SSH pour VPN fonctionnera dans les deux cas, bien que si vous êtes surtout intéressé par le premier cas, vous serez probablement plus heureux d’utiliser un routeur dédié ou un petit ordinateur comme un Raspberry Pi dédié à la tâche. Cependant, si vous louez un serveur quelque part, cette option ne fonctionnera pas pour vous.

Conditions préalables

Vous n’avez vraiment besoin que d’un accès root aux deux machines et au serveur SSH sur la machine distante avec le client SSH. Il y a une configuration requise des deux côtés. J’utilise KDE donc j’ai utilisé NetworkManager pour configurer les choses, bien que ce ne soit pas nécessaire. Cela facilite simplement les choses.

Le serveur a besoin de quelques éléments spéciaux configurés, mais ces éléments peuvent déjà être présents. Dans /etc/ssh/sshd_config tu voudras PermitTunnel=yes et vous devrez peut-être définir AllowTCPForwarding à oui, aussi. Le pare-feu peut également nécessiter quelques ajustements. Les instructions de configuration du plug-in NetworkManager seront utiles même si vous ne souhaitez pas l’utiliser.

Côté client

Si vous utilisez NetworkManager, vous aurez besoin du plug-in. Pour Neon et les autres distributions de type Debian, vous pouvez trouver le network-manager-ssh package et c’est tout ce dont vous avez besoin. Si vous ne souhaitez pas l’utiliser, vous pouvez utiliser cette ligne du blog de l’auteur du plug-in:


ssh -f -v -o Tunnel=point-to-point -o ServerAliveInterval=10 -o TCPKeepAlive=yes -w 100:100 root@YOUR_SSH_SERVER 
'/sbin/ifconfig tun100 172.16.40.1 netmask 255.255.255.252 pointopoint 172.16.40.2' && 
/sbin/ifconfig tun100 172.16.40.2 netmask 255.255.255.252 pointopoint 172.16.40.1


Vous devrez être root aux deux extrémités car vous créez un périphérique tunnel. Cela conduit à quelques problèmes, même si vous utilisez le plug-in. De toute évidence, vous ne voudrez pas que SSH vous bogue pour les mots de passe et les vérifications des clés d’hôte, mais si vous établissez le VPN manuellement, vous pouvez gérer cela.

Problèmes

Cependant, la plupart des systèmes modernes n’autorisent pas la connexion root avec un mot de passe, ou même pas du tout. Vous devrez donc d’abord résoudre ce problème. De plus, lorsque le NetworkManager exécute SSH, il recherchera des clés d’hôte et telles que root, pas en tant qu’utilisateur. S’il ne trouve rien, il mourra. Vous devrez donc vous assurer que le root peut se connecter sans intervention.

Pour autoriser les connexions root au serveur, vous devez modifier /etc/ssh/sshd_config et changer PermitRootLogin à oui. Je vous suggère de ne le faire que suffisamment longtemps pour effectuer les prochaines étapes. Vous devrez redémarrer le sshd serveur, ce qui signifie quelque chose comme:

systemctl restart sshd

ou

/etc/init.d/ssh restart

Ensuite, connecté en tant qu’utilisateur normal sur votre machine locale, utilisez ssh-copy-id pour installer votre certificat sur l’ordinateur hôte. Dès que cela fonctionne, vous devriez revenir en arrière et changer /etc/ssh/sshd_config utiliser « PermitRootLogin prohibit-password. » De cette façon, vous pouvez vous connecter en tant que root avec un certificat, mais pas avec un mot de passe.

Si vous vous êtes connecté une fois depuis votre compte root, SSH vous a probablement demandé si vous souhaitez accepter la clé du serveur. Sinon, ça va être un problème. Si vous le pouvez, connectez-vous et répondez oui pour qu’il arrête de demander. Cependant, si vous ne pouvez pas, nous pouvons également désactiver StrictHostKeyChecking.

En théorie, vous pouvez transmettre des options ssh supplémentaires au plugin NetworkManager, mais pour une raison quelconque, cela ne fonctionne pas sur la version des référentiels. Si vous démarrez manuellement, bien sûr, vous pouvez ajouter ce que vous voulez. Cependant, il est également possible de définir la configuration SSH de root dans /root/.ssh/configou la configuration globale à /etc/ssh/ssh_config.

Si vous modifiez le global, envisagez d’utiliser /etc/ssh/ssh_config.d si votre système le prend en charge. Cela vous permet de mettre des extraits pour un hôte particulier qui ne seront pas écrasés lors des mises à niveau du système. Par exemple, vous pouvez créer un fichier dans ce répertoire nommé hackaday.conf:


Host *.hackaday.com hackaday.com
StrictHostKeyChecking no
Tunnel yes


Encore une fois, si vous vous opposez à la vérification de la clé hôte, connectez-vous simplement une fois à partir de votre compte racine et acceptez manuellement la clé distante. Ou, si vous êtes courageux, modifiez manuellement /root/.ssh/known_hosts.

Prospérer

Ça devrait le faire. Si vous utilisez le plug-in NetworkManager, établissez simplement une nouvelle connexion. À partir de là, choisissez la section Connexions VPN et sélectionnez SSH.

Vous devrez entrer quelques paramètres, y compris le certificat que vous souhaitez utiliser pour vous connecter à la machine distante:

Une fois que vous avez enregistré la connexion, vous pouvez l’activer comme vous le feriez pour n’importe quelle autre interface réseau. Si vous voulez voir si cela fonctionne, demandez à un site Web votre adresse IP. Ensuite, activez le VPN et recommencez. Si vous rencontrez des difficultés pour connecter le VPN, vous pouvez consulter le journal système pour découvrir les erreurs générées par SSH.

Bien sûr…

Il existe d’autres solutions VPN. Cependant, comme il est presque certain que votre ordinateur distant dispose d’un serveur SSH, cela est très simple à configurer avec très peu de planification.

Vous pouvez faire beaucoup avec SSH si vous connaissez les astuces. Nous aimons particulièrement l’utiliser pour monter des fichiers.