Maison  >  Article  >  Opération et maintenance  >  Utilisez le proxy inverse ssh et autossh pour vous connecter au réseau interne à partir du réseau externe

Utilisez le proxy inverse ssh et autossh pour vous connecter au réseau interne à partir du réseau externe

大家讲道理
大家讲道理original
2017-05-28 10:29:213422parcourir

Avant-propos

J'ai rencontré un tel problème récemment. J'ai installé un serveur dans le laboratoire pour que mes juniors ou mes amis pratiquentLinux , et Il n'y a généralement aucun problème de connexion directe ici dans le laboratoire, tout est intranet. Mais le problème se pose lorsque je retourne au dortoir. Les chaussures pour enfants qui utilisent le réseau du campus peuvent toujours se connecter, mais les jeunes riches qui utilisent le réseau externe ne peuvent pas accéder à l 'Intranet. Existe-t-il un moyen de se connecter au serveur intranet via le réseau externe ? La réponse est oui, mais les conditions suivantes sont requises : un serveur accessible depuis le réseau externe.

1. Décrivez l'état actuel de la machine et faites le tri :

机器 IP 用户名 备注
A 10.21.32.106 gdut728 目标服务器,处于内网
B 123.123.123.123 root 外网服务器,相当于桥梁的作用

PS : 123.123.123.123 a été choisi au hasard par moi. Veuillez ne pas attaquer les serveurs d'autres personnes


2 Solution :

En termes simples : c'est Utiliser une machine. A comme proxy inverse pour la machine B ; puis utilisez la machine B comme proxy de transfert pour transférer les ports locaux

2.1 Préparatifs avant la mise en œuvre

Obligatoire pour chaque machineInstallerclient ssh .

Ici, j'utilise centos7, qui est fourni avec ssh. Si vous utilisez une autre version de Linux, veuillez la rechercher manuellement.

2.2 Présenter les paramètres ssh utilisés :

Proxy inverse

ssh -fCNR

Proxy Forward

ssh -fCNL

-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口

******************区分大小写啊各位亲******************

3. Opérez d'abord sur A :

Établissez un proxy inverse de la machine A à la machine B. Les instructions spécifiques sont

ssh -fCNR [B机器IP或省略]:[B机器端口]:[A机器的IP]:[A机器端口] [登陆B机器的用户名@服务器IP]

Ici, j'ai utilisé le port 7280 de la machine B et le port 22 de la machine A. D'après les instructions ci-dessus, le fonctionnement est comme ceci

ssh -fCNR 7280:localhost:22 root@123.123.123.123

Pour vérifier s'il a été démarré, vous pouvez utiliser la commande ps aux | grep ssh pour vérifier :

Utilisez le proxy inverse ssh et autossh pour vous connecter au réseau interne à partir du réseau externe


4. Ensuite, opérez sur B :

Établissez un proxy de transfert pour la machine B pour le transfert. Les instructions spécifiques sont

ssh -fCNL [A机器IP或省略]:[A机器端口]:[B机器的IP]:[B机器端口] [登陆B机器的用户名@B机器的IP]
D'après les instructions saisies à l'étape 3, le port de la machine B est ici cohérent avec le port de la machine B ci-dessus, et le port 1234 est également celui de la machine B.

ssh -fCNL *:1234:localhost:7280 localhost
Pour vérifier s'il a été démarré, vous pouvez utiliser la commande

pour vérifier : ps aux | grep ssh

Utilisez le proxy inverse ssh et autossh pour vous connecter au réseau interne à partir du réseau externe

Le port 1234 ici est le port local port de transfert, responsable de la communication avec les parties externes. Le port 7280 qui communique sur Internet et transmet les données réalise la fonction d'être accessible depuis d'autres machines. Dans le même temps, le signe * indique qu'il peut accepter l'accès depuis n'importe quelle adresse IP.


5. Il est temps de montrer le miracle

Maintenant que nous avons configuré la machine AB, nous pouvons nous connecter à l'intranet depuis un ordinateur sur le réseau externe. Puisque mon ordinateur actuel est sur le réseau interne et que les serveurs sont sur le réseau externe (c'est-à-dire la machine B configurée), je peux me connecter à la machine A sur mon réseau interne via la machine B. Les instructions spécifiques sont :

ssh -p1234 gdut728@123.123.123.123
Le paramètre -p ici est l'adresse IP de connexion spécifiée. Nous avons spécifié le port 1234 comme port de transfert ci-dessus, utilisez donc le port 1234 pour vous connecter. Ensuite, gdut728 est le nom d'utilisateur de la machine A sur le réseau interne et 123.123. .123.123 est le nom d'utilisateur de la machine B sur l'adresse IP du réseau externe.

Utilisez le proxy inverse ssh et autossh pour vous connecter au réseau interne à partir du réseau externe


6. Cette méthode de proxy inverse est instable

Malheureusement, ce lien inverse ssh échouera en raison d'un délai d'attente fermé. le canal reliant le réseau externe au réseau interne ne peut pas être maintenu. Pour cette raison, nous avons besoin d'une autre méthode pour fournir un tunnel proxy inverse ssh stable.

6.1 Chaque fois que ssh se reconnecte, vous devez saisir le mot de passe, donc ici vous configurez d'abord une connexion sans mot de passe à l'intranet

Exécuter sur la machine A sur l'intranet :

ssh-copy-id 内网用户名@外网IP -p指定转发的端口
Selon le port que j'ai défini auparavant, cette commande est la suivante

ssh-copy-id gdut728@123.123.123.123 -p1234

Utilisez le proxy inverse ssh et autossh pour vous connecter au réseau interne à partir du réseau externe

Après cela, la machine A sur le réseau interne peut se connecter machine B sur mon réseau externe via ssh. Vous pouvez vous connecter sans mot de passe~

Pour vérifier si vous pouvez vous connecter sans mot de passe, vous pouvez utiliser la commande suivante pour vérifier :

ssh root@123.123.123.123

Utilisez le proxy inverse ssh et autossh pour vous connecter au réseau interne à partir du réseau externe

6.2 Utilisez autossh pour établir un tunnel stable

centos7 n'a pas

installé par défaut, utilisez donc la commande pour installer autossh

yum install autossh
pour voir les instructions spécifiques à autossh :

autossh -M 7281 -fCNR 7280:localhost:22 root@123.123.123.123

Les paramètres sont les mêmes que ceux de ssh, mais la différence est que lorsque le tunnel est déconnecté, autossh se reconnectera automatiquement mais pas ssh. Une autre différence est le paramètre -M que nous devons souligner. Ce paramètre spécifie un port. Ce port est utilisé par la machine B sur le réseau externe pour recevoir les informations de la machine A sur le réseau interne. sera renvoyé à la machine A pour qu'il se reconnecte. autossh

Utilisez le proxy inverse ssh et autossh pour vous connecter au réseau interne à partir du réseau externe


7. Enfin, configurez Linux pour démarrer automatiquement autossh au démarrage, éliminant ainsi le problème de démarrer autossh vous-même après le redémarrage de Linux

Entrée :

vi /etc/rc.d/rc.local

Ajouter du contenu :

autossh -M 7281 -fCNR 7280:localhost:22 root@123.123.123.123

Parce qu'après centos7, le script de démarrage

original a été modifié directement. la fonction qui prend automatiquement effet doit recevoir à nouveau des autorisations d'exécutable car elle a été modifiée /etc/rc.d/rc.local

, puis entrez <a href="http://www.php.cn/wiki/%201294.html" target="_blank">chmod<p> +x /etc/rc.d/rc.local</p></a><a href="http://www.php.cn/wiki/1294.html" target="_blank">chmod</a> +x /etc/rc.d/rc.local
8. Conclusion :

Enfin configuré. On ne sait pas pour le moment s'il sera déconnecté. Voyons ce qui se passe demain et ensuite

mise à jour. S'il y a quelque chose qui ne va pas, veuillez me corriger ~


Référez-vous au site Web suivant

SSH dans le LAN à partir du réseau externe, proxy inverse + solution de proxy direct

Utilisez le tunnel inversé SSH pour la pénétration de l'intranet

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn