Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/11/2007, à 00:04

arnaud_d

[Résolu] Script de connexion automatique à un serveur ssh

Bonjour,

Je suis dans une résidence étudiante et je dois me connecter au firewall pour pouvoir avoir accès à  internet. Cette connexion me semble être une connexion ssh (bien que je n'y connaisse rien) en effet je dois taper dans une fenêtre terminal la ligne suivante :

ssh -T -l <login> <adresse du serveur>

ensuite apparait Password :
je le saisi puis je suis connecté. Très simple.

Comme c'est un peu long a faire à  chaque fois j'ai créé un fichier .sh dans le quel j'ai tapé

#!/bin/bash
echo <mon mot de passe>
ssh -T -l <login> <adresse du serveur>

de telle sorte qu'il me rappelle mon mot de passe puis qu'il se connecte.
Là  encore je dois entrer manuellement le mot de passe.

J'aimerais améliorer cela de deux manières :

1) j'aimerais que mon "script" entre lui-même le mot de passe, cela est-il possible ?
2) j'aimerais que ce "script" se lance au démarrage (et oui on reconnait l'habitué de windows que je suis).

Pourriez-vous me dire comment faire ?


Merci à  tout ceux qui m'apporteront des éléments de réponse.

PS : je suis nouveau sur Ubuntu, et je suis extrêmement satisfait ! Bravo pour cet incroyable forum.

PS2 : si vous savez ce que signifie ssh, le -T, le -l dans la ligne de commande je suis aussi curieux de savoir! Le mot "script" pour un .sh est-il correct ?

Dernière modification par arnaud_d (Le 28/03/2008, à 12:28)

Hors ligne

#2 Le 03/11/2007, à 02:02

pascal50

Re : [Résolu] Script de connexion automatique à un serveur ssh

Peut être une identification par clé ? Si l'environnement d'accueil sur le firewall le permet.
Un exemple ici

Hors ligne

#3 Le 03/11/2007, à 02:32

Beamo

Re : [Résolu] Script de connexion automatique à un serveur ssh

-l login_name
Specifies the user to log in as on the remote machine.  This also may be specified on a per-host basis in the configuration file.

-T      Disable pseudo-tty allocation.

Comme le propose pascal50, il fautdrait placer ton certificat sur la machine distante.

Hors ligne

#4 Le 06/11/2007, à 21:08

arnaud_d

Re : [Résolu] Script de connexion automatique à un serveur ssh

Merci pour votre aide mais malheureusement je cherche plutôt une solution "locale", c'est à dire qui n'affecte que mon ordinateur. Je suis assez nouveau dans les commandes linux et je ne peux pas du tout me permettre de faire un faux pas avec le firewall (auquel je n'ai même pas accès).

En fait je cherchais à savoir s'il existait une ligne de code permettant au terminal d'entrer lui même le mot de passe. Vous avez sans doute déjà vu un client FTP se connecter, il échange avec le serveur, envoie  le mot de passe lui-même dans l'invite de commande. C'était ça que j'imaginais. Ou alors un petit programme dédié à la connexion ssh qui se serait occupé de tout ça.

En tout cas je suis bien impressionné, je ne savais pas que le ssh était un protocole avec une clé publique et une clé privée.

Au cas où quelqu'un a encore une idée de la dernière chance...

Merci par avance

Hors ligne

#5 Le 15/11/2007, à 03:32

Vercingetopif

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonjour,
Regarde du coté d'expect.
Je viens de voire qu'il est dans les depot debian, donc il doit être aussi sur ceux d'ubuntu.
Donc pour toi, un script devrait ressembler à quelque chose comme ça :

#! /usr/bin/expect -f
set timeout 60
spawn /home/ssh1 | user@xxx.xxx.x.x
expect "password: $"
send "xxxxx\n"
interact

Sinon, pour qu'il se lance au démarrage, il faut que tu crées un petit script de rien du tout et que tu le mettes dans ton dossier ou sont les scripts de démarrage...
Par exemple, si le script plus haut s'appel automat-ssh.sh, le script de demarrage peut être : ( on l'appelera init-automatssh.sh pour la suite)

#!/bin/bash
automat-ssh.sh

(Pas trop long ce script, j'aime!)

Tu le copies dans /etc/init.d/
Tu lui donnes les bons droits : chmod +x init-automatss.sh
Tu repères ton dossier de demarrage. (Si tu ne le connais pas, regarde dans inittab, au niveau du runlevel.)
Si c'est 2 (c'est mon cas), alors dans /etc/rc2.d/, tu fais un liens vers ton super script!

ln -s /etc/init.d/init-automat.sh /etc/rc2.d/S90automatssh.sh

(S90 sera le 90ième service lancé, je mets ça, parce que je pense que ton reseau est deja lancé à ce stade du démarrage...)

Et voila!
Normalement, ça marche!


ps: j'ai donné des chemins qui sont bons sous debian, peut être pas sous ubuntu, je m'en excuse, mais locate est ton amie dans ce cas ;-)

#6 Le 15/11/2007, à 11:05

arnaud_d

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonjour,

Vercingetopif, tu me redonnes espoir !!! Moi qui pensais que ma question avait sombré dans l'oubli !

Prenons les choses une par unes :

Pour

spawn /home/ssh1 | user@xxx.xxx.x.x

j'ai ouvert un terminal et ai remplacé user par mon login et xxx.xxxx.x.x par l'adresse du serveur ssh à  laquelle je veux me connecter, voici ce que j'ai eu en réponse :

bash: user@x.x.x : commande introuvable
bash: spawn : commande introuvable

Je me suis fait deux remarques :

1) qu'est-ce que c'est que /home/ssh1, dois-je créer ce répertoire ? Parce que dans home je n'ai que arnaud comme répertoire...
2) s'il ne connait pas spawn c'est que je dois le télécharger. Je vais donc voir dans le Gestionnaire de paquets Synaptic et je cherche spawn. J'ai eu plein de réponse mais pas un seul paquet qui s'appelle spawn...

Donc je suis bloqué.

J'en ai profité pour prendre un peu d'avance et ai cherché expect dans Synaptic, lui je l'ai bien trouvé et je l'ai installé.

Merci pour cette idée, tu m'as beaucoup avancé. J'ai pas encore essayé pour le démarrage auto mais je pense que ça devrait marcher.

Arnaud

Hors ligne

#7 Le 15/11/2007, à 11:52

Vercingetopif

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonjour!

Effectivement, je ne t'ai pas indiqué de bons renseignements! Excuses moi...
Je viens de faire moi même le script, et il marche!
Voici ce que j'ai :

#! /usr/bin/expect -f

set force_conservative 1;

set timeout 2
spawn ssh ton-login@la-ou-tu-veux
expect "password: $"
send "ton-passwd\n"
interact

Voila!

Ceci dit, ne perd tout de même pas du vue que tu as dès lors un fichier sur ton ordinateur avec un mot de passe écrit en clair!!  Et que le fichier est lisible par tous les utilisateurs qui ont accés à  ta machine...Tu peux cependant mettre à  ton script des droits exclusif pour root, mais les autres utilisateurs ne pourrons pas l'executer, et il faudra taper ton mot de passe root avant d'executer le script, ce qui est un peu inutile vu que tu ne veux pas taper de mot de passe!
Je viens aussi de penser à  un truc : ce que je t'ai dis pour qu'il se lance au demarrage n'est pas adapté à  ce que tu veux en fait : je t'ai donné la methode pour un script qui demarre un service ou autre, mais là , tu veux qu'un terminal s'affiche sur ton bureau ou tu sois logué directement en ssh, c'est bien ça?
Dans ce cas, il vaut mieux utiliser cron, et lui demander de s'executer 1 minute après le démarrage de la machine...
Je ne sais plus trop ce qu'il faut mettre dans le crontab pour que la commande se lance après le démarrage, mais tu peux trouver de bons tutos sur cron avec google ;-)
Et alors, si tu fais ça dans le crontab du root, tu peux changer les droits sur le script pour que seul root puisse l'executer, et surtout le lire!! (un peu de sécurité ne fait jamais de mal!!)

Voili voila voilou!

#8 Le 15/11/2007, à 11:54

Vercingetopif

Re : [Résolu] Script de connexion automatique à un serveur ssh

Petit oubli dans mon message:
pour spawn, c'etait le script qui devait être mauvais...
Il ne me semble pas qu'il faille installer autre chose que expect (et le paquet de dépendance...)
En tout cas, je n'ai rien fait d'autre que apt-get install expect, et ça a marché!
Bonne journée.

#9 Le 15/11/2007, à 12:42

arnaud_d

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonjour,

Merci pour ta réponse si rapide.
J'ai fait ce que tu m'as dit, mais j'ai un message d'erreur :

spawn ssh login@serveur
Password:
Copyright (c) 1980, 1983, [je te recopie pas les autres, on s'en fiche]
The Regents of the University [idem]

You may only connect without a pseudo-tty!
Connection to serveur closed

J'ai du le recopier à  la main en faisant une capture d'écran parce que la fenêtre terminal se ferme tout de suite. D'ailleurs je pense que tu le sais, mais il ne faut pas que la fenêtre se ferme après la connexion parce que sinon ça me déconnecte. Pour l'instant je fonctionne avec une fenêtre qui reste tout le temps ouverte mais que je réduis dans un autre espace de travail pour pas qu'elle ne me gène.

Pfff... Qu'est-ce que c'est que pseudo-tty ?

Si tu as une idée...

D'ailleurs merci pour tes infos sécurité mais ça n'a pas d'importance, je suis le seul utilisateur et ce mot de passe n'intéresse personne...

Merci pour ton aide, te décourage pas s'il te plaà®t ! smile

Arnaud

PS : il y a autre chose que je ne comprend pas, je te le dis, mais peut-être que ça n'a aucune importance : si je tappe moi-même les commandes une par une dans un terminal, il me renvoie l'erreur

bash: spawn : commande introuvable

après l'envoi de la commande

spawn ssh login@serveur

Hors ligne

#10 Le 15/11/2007, à 18:17

Vercingetopif

Re : [Résolu] Script de connexion automatique à un serveur ssh

Salut!

En regardant ce que tu me dis, je pense que tu te connectes, mais ça foire côté server!
Tu arrives à te connecter habituellement en ssh au server?
Je vais essayer de me pencher sur ce qu'est le pseudo tty, mais apparement, c'est un terminal virtuel (genre xterm, etc...)
Pour les commandes à la main, c'est normal que ça ne marche pas : spawn est une option d'expect, tu ne peux donc pas l'utiliser dans une commande.

#11 Le 15/11/2007, à 21:51

arnaud_d

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonsoir !

J'AI TROUVE !!!!!

En fait dans ta méthode tu n'avais pas reprit exactement la ligne de commande que je tape actuellement et moi j'avais recopié bêtement !

Si modifie la ligne

spawn ssh ton-login@la-ou-tu-veux

par

spawn ssh -T -l login serveur

(ajout de -T -l et de l'@ entre login et serveur)

ça marche !!!!

Merci mille fois Vercingetopif, maintenant je me met ça en démarrage comme tu m'as expliqué et hop je met [Résolu].

Merci !!!

PS : Et puis, si tu sais comment réduire une fenêtre automatiquement , pour économiser un geste de plus lol !

Hors ligne

#12 Le 15/11/2007, à 22:07

Vercingetopif

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonsoir!
Je suis content que tu aies réussi!
Je viens de m'appercevoir que je n'avais pas lu tous les messages précédant mon poste sad ...

Pour ce qui est de réduire ta fenetre, j'opterai pour un raccourcis clavier. Je ne connais pas de commande qui sache faire ça, mais renseigne toi : on découvre tous les jours de nouvelles possibilitées dans linux!!

@+

#13 Le 16/11/2007, à 10:50

arnaud_d

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonjour,

J'ai cherché pour le démarrage automatique. J'ai fait un tour du cà´té des /etc/init.d mais ça ne marche pas, tu avais raison : il me lance bien mon script puisque lorsque j'ouvre ma session je suis connecté mais la fenêtre est déjà  refermée... Donc je reste connecté quelques minutes et après je me fait déconnecter par le serveur (fermeture de  la fenêtre terminal = déconnexion).

J'ai aussi essayé du cà´té de Système>Préférences>Sessions>Programmes aux démarrage mais là  ça ne marche pas du tout, j'ai pourtant mis comme commande ./script.ssh (qui est placé dans /home/arnaud)

Enfin j'ai essayé le cron en ajoutant une ligne à  mon tabcron (à  l'aide du tuto) mais ça ne marche pas non plus. En utilisant @reboot j'ai lu que ça lançait la commande même si personne n'était logué (au niveau du gestionnaire d'ouverture de sessions je pense). Donc encore une fois c'est trop tà´t et surtout pas en fenêtre terminal.

Bref j'ai toujours le même problème : il faudrait quelque chose capable d'ouvrir une fenêtre terminal au démarrage de ma session en lançant le script désiré (et que la fenêtre terminal ne se ferme pas).

En langage windows ça serait un truc genre command ... sous linux faut peut-être chercher du cà´té de gnome-terminal en espérant que je puisse faire un truc dans le genre

gnome-terminal  script.sh

A fouiller, d'ailleurs je m'y met !

Hors ligne

#14 Le 16/11/2007, à 10:58

Beamo

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonjour

Et si quand tu le lances tu mets un '&' à  la fin pour le lancer en tant que tà¢che de fond ?

gnome-terminal  script.sh &

Beamo

Hors ligne

#15 Le 16/11/2007, à 11:42

arnaud_d

Re : [Résolu] Script de connexion automatique à un serveur ssh

Bonjour Beamo,

Je viens de trouver une façon moyennement élégante de faire les choses :

gnome-terminal -e "./script.sh"

dans Système>Préférences>Sessions>Programmes aux démarrage. Cela ouvre une fenêtre de terminal, lance le script et laisse la fenêtre ouverte. Donc ça marche. big_smile big_smile big_smile

Par contre la fenêtre n'est pas réduite , il faut que je le fasse moi-même.
En fait ce que j'aimerais c'est que cette fenêtre soit déplacée vers l'espace de travail de droite, mais je crois que je vais pas trop en demander, déjà  mon problème principal est résolu...

J'ai pourtant essayé

gnome-terminal -e "./script.sh" --geometry=1x1+1280+800

ce qui me fait une toute petite fenêtre de terminal en bas à  droite de mon écran (sympa). Cela marche très bien si je le fais moi-même, mais dès lors que je met cette commande dans les programmes au démarrage, la fenêtre se ferme automatiquement (grand mystère...).

Mais bon mon script marche, si vraiment j'ai envie de trouver un moyen de mettre cette fenêtre dans l'espace de droite je ferai un autre sujet.

Merci à  toutes les personnes qui m'ont aidé, je pense surtout à  Vercingetopif et Beamo.

Arnaud

[Résolu] !

Hors ligne

#16 Le 28/03/2008, à 12:24

arnaud_d

Re : [Résolu] Script de connexion automatique à un serveur ssh

Pour information, et pour faire partager mes trouvailles :

J'ai enfin trouvé comment faire EXACTEMENT ce que je voulais, c'est à dire une fenêtre terminal me connectant à mon serveur ssh puis qui reste ouverte en étant réduite dans la notification tray :

Il faut installer le programme alltray (via Applications > Add/remove)

Dans System > Preferences > Sessions > Onglet Startup Programs, creer une entrée avec comme ligne de commande :

alltray gnome-terminal -e "./script.sh"

(mon fichier est dans mon home)

On peut aussi creer un lançeur de type Application avec la même ligne de commande.

Voilà, je suis bien content, ça fait propre. Et bien sur c'est applicable à beaucoup d'autres scripts...

Arnaud

(Très embêtant ce problèmes d'accents...)

edit : pour être vraiment complet, voici le contenu du script :

#! /usr/bin/expect -f
set force_conservative 1;
set timeout 2
spawn ssh -T -l username adresse_serveur
expect "Password:"
send "mot_de_passe\n"
interact

Dernière modification par arnaud_d (Le 28/03/2008, à 12:27)

Hors ligne

#17 Le 29/03/2008, à 04:19

Beamo

Re : [Résolu] Script de connexion automatique à un serveur ssh

Je prends note.

Merci pour ton retour

Beamo

Hors ligne

#18 Le 31/03/2008, à 06:42

Anakal

Re : [Résolu] Script de connexion automatique à un serveur ssh

la methode de beamo avec '&' est plus propre et tu n'aura pas de fenetre qui reste ouverte.

un spawn& ssh -T -l login serveur

devrais marcher. Ca devrasi lancer la commande et refermer le terminal sans arreter ta connexion.

Anakal