Fondamentalement, je veux pouvoir faire quelque chose comme TeamViewer, où quelle que soit la configuration du réseau, tant que mon serveur ssh (Machine A) et mon client ssh (Machine B) ont un accès Internet (et un troisième serveur, Machine C) ), Je peux y accéder - la raison en est que je veux pouvoir déplacer la machine A, la brancher pour l'alimenter, la connecter automatiquement à l'un des nombreux réseaux wifi préconfigurés (chacun unique / différent) , sans avoir configuré de redirection de port ou similaire sur les réseaux, et pouvoir vous y connecter via Internet depuis la Machine B
Comment puis-je accomplir cela? Cela ne me dérange pas de configurer quelque chose sur un serveur avec une adresse IP statique pour aider à la prise de contact, mais cela ne me dérange pas non plus d'un serveur tiers si quelque chose existe déjà (comme c'est le cas pour, par exemple, TeamViewer)
modifier pour plus de clarté: j'ai 3 machines, AB et C
A est un Raspberry Pi sans tête qui sera mis sous / hors tension dans des emplacements aléatoires, connectez-vous à un réseau wifi pré-configuré
B est la machine avec un moniteur, un clavier, etc. approprié auquel je veux me connecter
C est un serveur AWS loué que j'ai avec une adresse IP statique, peut SSH de manière fiable à partir de B, et peut installer tout ce qui est nécessaire pour aider B à se connecter à A
la source
ssh
tunnels très brièvement. Je ne pourrais jamais les faire rester debout, même avecautossh
; si la liaison montante a chuté pour une raison quelconque, ils devraient toujours être redémarrés à la main. Finalement, je me suis installé un petit VPN avec OpenVPN, et il a bien fait le travail.Réponses:
Comme vous avez la machine C sur Internet, créez un compte spécial nommé
sesame
et, sur A, vous créez un compte avec une clé publique / privée à partir de laquelle vous avez copié la clé publique dans lesesame
compte sur C.Vous pouvez maintenant vous connecter de A à C, mais au lieu de cela, vous le faites:
(vous voudrez peut-être combiner cela avec une instruction de sommeil ou, par exemple, 10 secondes et envelopper cela dans une boucle sans fin afin que la connexion soit rétablie si le WiFi est tombé en panne.)
Depuis la machine B, connectez-vous normalement à n'importe quel compte que vous avez sur C (peut être mais ne doit pas être le
sesame
compte, différents comptes sont ce que j'utilise). Et une fois que vous êtes sur C, connectez-vous à A en utilisant:Vous pouvez bien sûr utiliser un numéro différent de 19930.
Il est possible d'exécuter le
ssh -N -R ...
depuis/etc/rc.local
si votre clé privée sur A n'est pas protégée par un mot de passe. Dans ce cas, assurez-vous de créersesame
un compte séparé avec des fonctionnalités limitées, de sorte que lorsque votre machine A est compromise / volée, le risque pour votre serveur C est limité. C'est aussi pourquoi je recommande d'utiliser un compte séparé pour passer de B à C.Vous pouvez réellement définir le shell de connexion pour
sesame
dans/etc/passwd
à/bin/false
, de sorte que vous ne pouvez plus utiliser le compte pour se connecter.la source
sesame
compte sur C, il se peut que vous puissiez le faire fonctionner en/bin/false
tant que shell de connexion (car ssh ne se connecte jamais vraiment), ou le limiter autrement en ajoutant uncommand=
paramètre dans~/.ssh/authorized_keys
/bin/false
.ssh localhost -p portnum
bien sûr)Installez un tunnel IPv6 (tel que Sixxs ) sur votre Raspberry Pi. Vous aurez maintenant une adresse IPv6 statique permanente qui sera mise en ligne chaque fois que votre Pi est en ligne. Assurez-vous de sécuriser votre Pi car il est connecté au monde maintenant.
Si votre B est connecté à un réseau IPv6, connectez-vous directement au Pi. Si B n'est pas connecté à un réseau IPv6, utilisez C comme serveur de saut, où vous vous connectez via IPv4 à C, puis ssh via IPv6 de C à votre Pi.
la source
Jetez également un œil à ceci:
La technologie utilisée est la même que celle décrite dans la réponse acceptée, mais elle utilise certains scripts pour automatiser les choses et rendre la solution plus générique. Il fait également toutes les configurations à l'intérieur d'un conteneur Docker, de sorte que le système principal est sûr au cas où quelque chose serait compromis.
Cependant, il ne fournit pas de connexion automatique de A à C, il doit être lancé manuellement. Vous pouvez peut-être personnaliser un peu la solution pour qu'elle fasse exactement ce que vous voulez.
la source
Peut-être que vous devez utiliser un concept autre que ssh ou tunneling .. Je vous suggère d'utiliser un concept de messagerie comme WhatsApp ou télégramme .. Mais je pense que si vous voulez utiliser quelque chose comme vim, ce n'est pas aussi bon que ssh ..
Telegram a un client telegram-cli que vous pouvez modifier pour accepter et exécuter certaines commandes et l'implémenter dans le raspi.
Si vous utilisez Telegram, vous pouvez simplifier votre réseau et au moins réduire la machine C pour faire le Hub parce que le serveur C est sous-titré avec le serveur de messagerie télégramme. Machine aussi, vous pouvez installer le client de télégramme pour un système d'exploitation spécifique si vous voulez .. la sécurité? le message du télégramme est inscrit. Si quelqu'un veut ddos votre raspi? ils ddos le serveur de télégramme d'abord ..
Donc, tant que votre raspi peut se connecter au serveur de télégramme (simplement votre raspi se connecte à Internet) même le raspi est derrière le pare-feu / proxy / IP privée / IP dynamique, vous pouvez toujours faire la télécommande.
Avec ce concept, vous pouvez faire la télécommande n'importe où, n'importe quand.
la source
Je pense que vous devriez jeter un oeil à la redirection de port ssh inverse. En un mot, vous lancez d'abord un ssh de A à C en utilisant la syntaxe ci-dessous, puis utilisez ce port pour tunneler de C à A. Vous ne frapperez pas le pare-feu domestique de A lorsque vous le faites parce que le R-Pi a déjà un tunnel.
ssh -R 2210: localhost: 22 myCoolAwsSite.com
Veuillez considérer les ramifications de sécurité lorsque vous le faites. Vous pouvez ajouter un cron jujitsu afin que la connexion soit rétablie après un redémarrage.
la source