web-dev-qa-db-fra.com

Comment exposer plusieurs ports de serveur distant via sshuttle?

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?

5
david.libremone

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.

4
david.libremone