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.
机器 | 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
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
Ici, j'utilise centos7, qui est fourni avec ssh. Si vous utilisez une autre version de Linux, veuillez la rechercher manuellement.
ssh -fCNR
ssh -fCNL
-f 后台执行ssh指令 -C 允许压缩数据 -N 不执行远程指令 -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口 -L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口 -p 指定远程主机的端口 ******************区分大小写啊各位亲******************
É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 :
É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]
ssh -fCNL *:1234:localhost:7280 localhost
pour vérifier : ps aux | grep ssh
ssh -p1234 gdut728@123.123.123.123
ssh-copy-id 内网用户名@外网IP -p指定转发的端口
ssh-copy-id gdut728@123.123.123.123 -p1234
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
installé par défaut, utilisez donc la commande pour installer autossh
yum install 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
vi /etc/rc.d/rc.local
autossh -M 7281 -fCNR 7280:localhost:22 root@123.123.123.123
Parce qu'après centos7, le script de démarrage, puis entrezoriginal 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
<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
Enfin configuré. On ne sait pas pour le moment s'il sera déconnecté. Voyons ce qui se passe demain et ensuitemise à jour. S'il y a quelque chose qui ne va pas, veuillez me corriger ~
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!