Comment puis-je démarrer automatiquement un tunnel SSH -D à la connexion pour un proxy SOCKS?

9

Je sais que si je veux démarrer un tunnel SSH

ssh -d 9000 user@userserver

C'est une solution pour un tunnel dynamique à ouvrir sur le port 9000 pour un utilisateur nommé "user" sur l'hôte "userserver"

Cependant, comment puis-je automatiser ce processus dans Ubuntu pour ne pas avoir à ouvrir un terminal à chaque fois que je me connecte et démarre le tunnel? Je veux être SSH au moment où je me connecte.

Je sais que je pourrais créer un fichier bash mais ne serais-je pas obligé de stocker le mot de passe de mon utilisateur de serveur en texte clair car je serais invité à le saisir après la commande initiale?

Dalanmiller
la source
3
vous pouvez configurer des clés ssh au lieu d'utiliser un mot de passe (voir pkeck.myweb.uga.edu/ssh ), mais quelle que soit votre configuration, vous compromettrez la sécurité si vous automatisez la connexion ...
LassePoulsen
Pas exactement à propos de votre question, mais je vous recommande d'essayer d'utiliser sshuttlepour router votre Internet via un SSH. Il ne résout pas les problèmes de connexion sans mot de passe.
Oxwivi
Si vous configurez SSH sans mot de passe comme je l'ai répondu, sshuttlepeut également être démarré automatiquement (remarque, sshuttlenécessite des privilèges d'administrateur pour fonctionner).
Oxwivi

Réponses:

9
  1. Configurez la connexion SSH sans mot de passe selon cette réponse :

    • ssh-keygen (vous serez invité à entrer un mot de passe, laissez-le vide)

    • ssh-copy-id user@userserver (entrez votre mot de passe de connexion SSH pour la dernière fois)

  2. Ajoutez une entrée de démarrage pour SSH:

entrez la description de l'image ici

entrez la description de l'image ici

Oxwivi
la source
@Stefano, merci! La moitié du mérite revient à Rinzwind et Marco qui m'ont éclairé sur SSH sans mot de passe en premier lieu!
Oxwivi
1

Que diriez-vous d'utiliser une configuration de clé ssh, comme l'a suggéré Source Lab, mais de configurer votre clé avec une phrase de passe et de vous assurer que ssh-agent est en cours d'exécution sur votre machine afin qu'il ne doive être entré qu'une seule fois par session de connexion.

Il y a quelques avantages à le faire de cette façon: - Vous pouvez obtenir une connexion sans mot de passe automatisée (à part le premier démarrage / connexion) chaque fois que vous émettez votre commande ssh - Votre clé a une phrase de passe donc c'est plus sûr - L'utilisation de clés pub / privées est très standard et sera pris en charge par la plupart des installations du serveur SSH

Pour configurer l'authentification par clé SSH:

Pour utiliser ssh-agent / keychain (pour mettre en cache la phrase de passe tout au long de la session de connexion):

En ce qui concerne l'automatisation de la création du tunnel au démarrage, une idée pourrait être de créer un script shell rapide qui démarre le tunnel:

~$ sudo cat <<EOF >> /usr/local/bin/start_tunnel.sh
ssh-add # ensure key is added to agent
ssh -D 9000 user@userserver # substitute real server in here (of course)
EOF
~$ chmod +x /usr/local/bin/start_tunnel.sh

Ensuite, ajoutez-le en tant que programme de démarrage (Système -> Préférences -> Applications de démarrage), devrait fonctionner, de toute façon!

kwiksand
la source
Est-il possible de le faire via la section proxy réseau des paramètres dans Ubuntu? Il existe une option pour la vérification des utilisateurs et vous pouvez pré-entrer votre nom d'utilisateur et votre mot de passe? Juste au cas où mes paramètres changeraient, je ne voudrais pas avoir à entrer et à retaper le fichier.
dalanmiller
J'ai peur que ça ne marche pas, même pas avec autossh.
skerit
-1
sudo ssh-keygen #type Enter everywhere
sudo cat /home/root/.ssh/ id_dsa.pub >> .ssh/authorized_keys

/etc/rc.local add string:

echo "ssh socks 192.168.0.1:8000" ; sudo ssh -fND 192.168.0.1:8000 localhost
user189643
la source
N'oubliez pas que la configuration d'une clé ssh est dédiée. Accepter aveuglément toutes les invites sans lire ce qui se fait pourrait compromettre votre service / système.
Braiam