comment ssh deux ordinateurs derrière NAT et pare-feu, sans troisième ordinateur

9

J'essaie de ssh dans ma boîte Linux à la maison. Ma maison est un environnement de style dortoir - NAT et pare-feu avec un ordinateur portable personnel exécutant Arch Linux. Mon travail est un style d'entreprise Windows 7 - NAT et pare-feu proxy, aucun droit d'administrateur.

Je peux connecter les deux portables Team Viewer en cours d'exécution. Cependant, cela ne correspond pas à ce que je recherche vraiment. Je cherche simplement à SSH dans ma boîte Linux à la maison, en laissant ma boîte Linux complètement déconnectée - essentiellement sans tête lorsque je ne suis pas là.

J'ai lu sur le tunneling, mais si je comprends bien le tunneling, j'ai besoin d'un serveur tiers auquel les deux ordinateurs peuvent se connecter. Je n'ai pas un tel serveur et je ne souhaite pas non plus payer pour une telle chose.


Quelle est la solution simple et sécurisée pour SSH dans mon ordinateur portable à partir du travail? Existe-t-il un «troisième serveur» gratuit et sécurisé? J'ai parcouru Google de haut en bas, mais je semble de plus en plus confus.

user1026169
la source
2
Avez-vous accès au routeur? Vous devez généralement ajuster les paramètres NAT pour pointer votre adresse IP publique vers votre serveur SSH interne pour faire quelque chose comme ça.
jmreicha
Non, je n'ai pas d'accès au routeur et je ne peux pas ajuster les paramètres NAT.
user1026169
Dans ce cas, vous devrez probablement utiliser un proxy via un troisième serveur pour vous connecter si l'option Team Viewer ne fonctionne pas.
jmreicha
qui fournit un serveur que je peux utiliser uniquement comme proxy pour ssh?
user1026169
Je parie qu'un VPS basé sur le cloud ferait l'affaire.
jmreicha

Réponses:

16

pwnat est un outil open source censé résoudre ce problème. Ça dit :

pwnat est un outil qui permet à n'importe quel nombre de clients derrière les NAT de communiquer avec un serveur derrière un NAT séparé sans transfert de port et sans configuration DMZ sur aucun routeur afin de communiquer directement entre eux. Le serveur n'a besoin de rien savoir sur les clients essayant de se connecter.

Il n'y a aucun intermédiaire, aucun proxy, aucun tiers, aucun UPnP / STUN / ICE requis, aucun usurpation d'identité et aucune astuce DNS.

Plus important encore, le client peut alors se connecter à n'importe quel hôte ou port sur n'importe quel hôte distant ou à un hôte fixe et un port décidé par le serveur.

pwnat établit ce type de connexion:

Machine A (IP: 192.168.1.3) -> NAT A (IP: 122.xxx) -> Internet -> NAT B (IP: 59.xxx) -> Machine B (192.168.2.10)

pwnat est distribué uniquement pour Linux, mais l'article PWNAT: Windows Complied Version contient la version Windows . Voir aussi, du même auteur PWNAT: Exemple .

La méthode utilisée par pwnat est incroyablement intelligente, mais rien ne garantit qu'elle fonctionnera avec votre environnement.

harrymc
la source
1
Remarque: pwnat dépend d'ICMP pour fonctionner. Plus précisément, les messages d'écho icmp et de temps dépassé. Cela fonctionne car ICMP est sans état.
shadowbq
Ça ne marche pas pour moi. Les routeurs NAT ne sont pas assez intelligents pour implémenter des normes, ni assez intelligents pour comprendre l'auteur de pwnat. +1 encore pour l'intelligence.
quantum
J'ai également essayé pwnat sans succès. Mais il est possible que j'ai une erreur dans ma configuration. Y a-t-il quelqu'un qui a réussi qui peut apporter son soutien?
robguinness
5

Personnellement, je pense que le tunneling est votre meilleure option, même si vous ne possédez pas déjà un troisième serveur.

Amazon EC2 propose une option de tarification de niveau gratuit permettant aux nouveaux clients d'exécuter une micro-instance de Linux / Windows jusqu'à 750 heures / mois, gratuitement, pendant un an. Je n'ai pas utilisé le service moi-même, mais je suppose que si vous n'exécutez le serveur virtuel qu'en cas de besoin, vous obtenez un tunnel SSH opérationnel gratuitement. Vous pourriez même trouver le service assez bon marché pour justifier le paiement?

Hak5 a produit une bonne introduction au tunneling (avec persistance). Vous pouvez également configurer un script déclenché par CRON pour tenter de vous connecter au serveur virtuel afin d'avoir accès à l'ordinateur portable quelques minutes après le démarrage de l'instance EC2 ...

danielcraigie
la source
Merci, j'ai trouvé un VPS gratuit avec l'aide de quelques forums.
user1026169
1
Notez également que 750 heures, c'est 31,25 jours ... Donc, fondamentalement, vous obtenez une t2.microinstance gratuitement, pendant un an.
Attie
3

La meilleure option serait de configurer la redirection de port si vous le pouvez, mais si votre campus fait le pare-feu et que vous ne pouvez pas effectuer de redirection de port vous-même, utilisez cette suggestion.

Oui, il y a un 3ème serveur gratuit et vous l'utilisez déjà, TeamViewer. Assurez-vous que TeamViewer est installé en tant que service (ou quel que soit l'équivalent pour Linux, j'utilise uniquement la version Windows). Installez ensuite le pilote VPN au travail et à la maison. Vous pourrez alors vous connecter en utilisant un VPN depuis votre lieu de travail et votre machine domestique aura une adresse IP 7.xxx. Ensuite, si vous souhaitez accéder à une session de terminal, exécutez SSH sur la liaison VPN.

L'option d'installation VPN est sous les paramètres avancés. entrez la description de l'image ici

Cela ajoutera une option "VPN" pour les types de connexions que vous pouvez faire. entrez la description de l'image ici

Scott Chamberlain
la source
1
Merci beaucoup pour l'aide détaillée et les captures d'écran. J'utilise TeamViewer portable et je n'ai aucun droit d'administrateur. L'option VPN est grisée et je ne peux pas l'utiliser.
user1026169
1

Vous devriez simplement pouvoir configurer la redirection de port (port 22) sur votre routeur / pare-feu domestique. Et puis connectez-vous à votre adresse IP publique à domicile lorsque vous êtes au travail. Vous pouvez utiliser quelque chose comme dyndns si vous n'avez pas d'adresse IP publique statique à la maison.

NetworkFish
la source
La redirection de port n'est possible sur aucune de mes machines en raison du réseau qui les dessert. Je n'ai pas de configuration IP, mais il n'y a pas de ports que je peux utiliser pour connecter les machines.
user1026169
0

Vous pouvez utiliser un serveur XMPP / Tox public comme "troisième serveur". À savoir, il existe des projets comme Tuntox et PPPoAT (PPP sur Any Transport), qui utilisent ces protocoles de messagerie instantanée comme couches de transport.

J'ai essayé le PPPoAT, qui prend en charge XMPP et, contrairement à PWNAT, ce mécanisme fonctionne bien pour moi.

Pour l'utiliser, vous avez besoin de deux comptes XMPP sur n'importe quel serveur public - un pour le serveur auquel vous souhaitez vous connecter, un autre pour votre client. Après avoir démarré pppoatsur le serveur, puis sur le client (les deux avec les paramètres de configuration appropriés), vous pouvez immédiatement démarrer la connexion comme par exemple

ssh [email protected]

Cela sera plus lent que la connexion directe, bien sûr, et la vitesse dépendra très probablement du serveur XMPP que vous choisissez, mais pour une activité normale de la console, c'est assez bon.

En ce qui concerne la sécurité, SSH peut fonctionner dans un réseau totalement non sécurisé, car il implémente déjà son propre cryptage, donc si la connexion basée sur XMPP est sécurisée est en fait sans importance lorsque vous utilisez SSH.

Ruslan
la source