J'ai un serveur distant qui expose uniquement SSH. Des services s'exécutent sur d'autres ports, par exemple une base de données sur le port 3306. Ces ports ne sont pas accessibles à distance, mais sont accessibles depuis le contexte du serveur (localhost:3306
).
Utilisation de ssh -L
je peux accéder à un seul port sur le serveur distant . Mais comment puis-je rendre tous tous ces ports accessibles à ma machine locale via une connexion ssh/sshuttle?
Sur le serveur distant, définissez une adresse IP secondaire , par exemple 10.0.0.1, qui pointe vers elle-même. (Comme 127.0.0.1 le fait.)
Sur votre ordinateur local, créez votre connexion sshuttle comme suit:
sshuttle -r user@remote 10.0.0.1
# "user" is your username on the remote machine
# "remote" is the name or IP address of the remote machine
Vous pouvez maintenant accéder au serveur distant à l'adresse 10.0.0.1. Etant donné que les connexions de 10.0.0.1 sont définies comme "elles-mêmes", tous les ports sont accessibles à cette adresse. (Ils ne sont plus accessibles dès que vous fermez la connexion sshuttle.)
Vous pouvez le confirmer avec les commandes suivantes:
nmap remote # returns only ssh port
nmap 10.0.0.1 # returns all ports
Vous pouvez maintenant vous connecter à votre base de données avec l'adresse 10.0.0.1:3306
. Par exemple, s'il s'agit d'une base de données MySQL, vous pouvez vous y connecter via MySQL Workbench.
Si cette approche vous convient, vous pouvez envisager d'utiliser sshoot pour gérer vos connexions sshuttle.