L'idée de base ici est de se connecter à un ordinateur distant sur un réseau et de faire en sorte que tout votre trafic réseau ressemble à un local sur ce réseau.
La première raison pour laquelle quelqu'un pourrait en avoir besoin est d'améliorer la sécurité et d'éliminer rapidement les menaces potentielles. Par exemple, vous devrez peut-être imprimer sur une imprimante réseau sans «exposer» cette imprimante à Internet standard. En conséquence, par exemple, quelqu'un peut s'asseoir dans un café et, après s'être connecté au réseau via VPN, imprimer des documents sur l'imprimante, se sentir comme s'il était à son bureau, et l'imprimante se tient à quelques mètres. L'utilisation d'un VPN signifie également que les données transmises sur le réseau WiFi du café seront cryptées.
La deuxième raison est de cacher l'emplacement réel de l'utilisateur aux regards indiscrets. Disons que quelqu'un aime regarder des vidéos de la BBC mais vit en Équateur. Cela signifie que pour que les vidéos ne soient pas bloquées pour lui, il devra se connecter via VPN à un réseau situé au Royaume-Uni. Si les autorités d'un certain pays surveillent et censurent Internet, les résidents de ce pays peuvent également bénéficier de la possibilité de masquer leur trafic.
L'utilisation de SSH pour établir une connexion VPN convient aux deux tâches ci-dessus. Cependant, si vous êtes principalement intéressé par le premier d'entre eux, vous feriez peut-être mieux d'utiliser un routeur dédié ou un petit ordinateur, comme le Raspberry Pi, destiné à résoudre votre problème. Je dois dire que si vous louez un serveur quelque part, alors "VPN over SSH" n'est pas pour vous.
Préparation préliminaire
VPN
Vous n'avez besoin que d'un accès root aux deux machines. Un serveur SSH doit être installé sur l'ordinateur distant. Vous aurez bien sûr également besoin d'un client SSH. Les machines locales et distantes devront effectuer une configuration. J'utilise KDE, donc j'utilise NetworkManager pour faire les réglages nécessaires, mais vous pouvez aller dans l'autre sens. L'utilisation de NetworkManager facilite simplement les choses.
Certains paramètres spéciaux doivent être définis sur le serveur, mais il est fort possible qu'ils soient déjà effectués sur celui-ci. Ainsi, le fichier
/etc/ssh/sshd_config
doit contenir une ligne
PermitTunnel=yes
. En outre, vous devrez peut-être définir la valeur sur un
yes
paramètre
AllowTCPForwarding
. Le pare-feu peut également avoir besoin de certains paramètres. Cependant, les instructions de configuration du plugin NetworkManager peut être utile même à ceux qui n'utilisent pas ce programme.
Paramètres côté client
Si vous utilisez NetworkManager, vous aurez besoin du plugin approprié. Pour Neon et les autres distributions basées sur Debian, le paquet convient
network-manager-ssh
. C'est tout ce dont vous avez besoin. Si vous ne souhaitez pas utiliser NetworkManager, vous pouvez utiliser les commandes suivantes à partir du matériel de l' auteur du plugin:
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
Cela nécessite un accès root aux deux systèmes, car nous créons un tunnel. Ceci, même lors de l'utilisation du plugin, conduit à plusieurs problèmes. Évidemment, nous n'aimerions pas être constamment invités à entrer un mot de passe pour la connexion SSH et à vérifier la clé. Mais si vous configurez manuellement le VPN, vous pouvez résoudre ces problèmes.
Problèmes
La plupart des systèmes modernes ne vous permettent pas de vous connecter en tant que root en utilisant un mot de passe, et parfois ne vous permettent pas du tout de vous connecter au système dans ce mode. Par conséquent, nous devons avant tout résoudre ce problème. De plus, lorsque NetworkManager démarre SSH, il recherche des clés pour l'utilisateur root, pas pour l'utilisateur normal. S'il ne trouve pas quelque chose, il s'arrête. Par conséquent, nous devons fournir une connexion root transparente.
Afin de permettre la connexion root au serveur, vous devez modifier le fichier
/etc/ssh/sshd_config
et définir le paramètre
PermitRootLogin
sur
yes
... Je vous recommande de travailler dans ce mode pendant exactement le temps nécessaire pour effectuer les étapes suivantes de configuration du serveur. Ensuite, vous devrez redémarrer le serveur sshd, par exemple, avec la commande suivante:
systemctl restart sshd
Vous pouvez également utiliser cette commande:
/etc/init.d/ssh restart
Ensuite, en vous connectant à la machine locale à l'aide d'un compte normal, vous devez utiliser
ssh-copy-id
pour installer le certificat sur la machine hôte. Une fois que cela est fait, vous devez retourner sur le serveur et changer la
/etc/ssh/sshd_config
valeur
PermitRootLogin
en
prohibit-password
. Cela vous permettra de vous connecter au serveur en tant que root en utilisant un certificat, mais pas en utilisant un mot de passe.
Si vous êtes déjà connecté avec root, vous avez peut-être déjà été invité à accepter la clé du serveur. Si ce n'est pas le cas, nous avons un problème. Si vous le pouvez, veuillez vous connecter et répondre oui à la question correspondante, après quoi le système cessera de la poser. Mais, si cela ne peut être fait, nous pouvons résoudre le problème en désactivant
StrictHostKeyChecking
.
En théorie, vous pouvez transmettre des options ssh supplémentaires au plugin NetworkManager, mais pour une raison quelconque, cette approche ne fonctionne pas avec la version du plugin des référentiels. Si vous n'utilisez pas le plugin, faites tout manuellement, vous pouvez effectuer vous-même les paramètres nécessaires. Les paramètres SSH pour l'utilisateur root peuvent être définis dans
/root/.ssh/config
. Vous pouvez également définir des paramètres globaux dans
/etc/ssh/ssh_config
.
Si vous modifiez les paramètres globaux, si le système le prend en charge, envisagez d'utiliser
/etc/ssh/ssh_config.d
. Grâce à cela, vous pourrez définir des paramètres pour un hôte spécifique, qui ne seront pas écrasés lors de la mise à jour du système. Par exemple, vous pouvez créer un fichier dans le répertoire approprié avec le nom
hackaday.conf
:
Host *.hackaday.com hackaday.com StrictHostKeyChecking no Tunnel yes
Encore une fois, si vous n'aimez pas l'idée de vérifier la clé d'hôte, connectez-vous une fois en tant que root et acceptez manuellement la clé distante. Ou, si vous êtes courageux, modifiez manuellement
/root/.ssh/known_hosts
.
Connexion
Tout devrait être prêt à fonctionner maintenant. Si vous utilisez le plugin NetworkManager, il vous suffit d'établir une nouvelle connexion. À savoir, vous devez accéder à la section des connexions VPN et sélectionner SSH.
Sélection du type de connexion
Vous devez maintenant configurer plusieurs paramètres de la nouvelle connexion. Y compris - vous devez spécifier le certificat que vous prévoyez d'utiliser pour vous connecter au système distant.
Configuration de la connexion
Après avoir enregistré les paramètres de connexion, cette connexion peut être activée - comme toute autre interface réseau. Si vous souhaitez tester votre nouveau VPN, demandez d'abord, normalement, votre adresse IP sur le site Web dédié . Et puis allumez le VPN et retrouvez votre adresse. Si vous ne parvenez pas à établir une connexion VPN, recherchez dans le journal système des informations sur les erreurs SSH.
Résultat
Il existe bien sûr d'autres solutions VPN. Mais il est presque garanti que l'ordinateur distant avec lequel vous travaillez dispose d'un serveur SSH. Par conséquent, la méthode proposée pour établir une connexion VPN via SSH est une solution simple et pratique qui peut être utilisée sans aucune préparation préalable.
En passant, vous pouvez faire beaucoup de choses intéressantes avec SSH . Par exemple - pour organiser un travail pratique avec des fichiers .
Utilisez-vous un VPN?