Richard Bruno
navigation
Home
admin









Openssh
October 18th, 2016

Table des matières


Fichier config
SSH Port Forwarding et VNC
Générer une clé
Regénérer les clés du serveur
Test de connexion ssh en utilisant les clés
Rebond sur une machine


Fichier config



Le fichier .ssh/config permet de se simplifier la vie.
Exemple :

$ cat .ssh/config
Host gloups
User brichard
HostName gloups.univ-lemans.fr



A la place de

ssh brichard@gloups.univ-lemans.fr


je peux simplement saisir :

ssh gloups



Source : http://nerderati.com/2011/03/simplify-your-life-with-an-ssh-config-file/

SSH Port Forwarding et VNC



Objectif
Utiliser VNC sur une machine n'ayant que le ssh d'ouvert.

Sources

http://www.securityfocus.com/infocus/1816
et
http://www.ssh.com/support/documentation/online/ssh/adminguide/32/Port_Forwarding.html

Exemple 1 : votre machine est protégée par un firewall et seul le ssh est autorisé

[bruno@localhost:] ssh -C -N -L 5999:machine_distante:5900 mon_compte@machine_distante



Laissez cette connexion tranquille...
Vous pouvez maintenant accéder à VNC depuis votre machine locale à l'adresse "localhost:5999".

Note : la commande ci-dessus, écoute sur le port 5999 et redirige les données vers le port 5900 de la machine distante.

Exemple 2 : votre machine est protégée par un firewall, seul le ssh est autorisé ET, DE PLUS, vous devez passer par une machine relai

ssh -C -L 5999:machine_relai:5998 bruno@machine_relai 'ssh -N -C -g -L 5998:machine_distante:5900 bruno@machine_distante'



Laissez cette connexion tranquille...
Vous pouvez maintenant accéder à VNC depuis votre machine locale à l'adresse "localhost:5999".

Note 1 : la première partie de la commande permet de créer un tunnel vers la machine relai. La deuxième partie, exécutée sur la machine relai, permet de créer un tunnel entre la machine relai et la machine distante.
Note 2 : le "-g" dans la commande exécutée sur la machine relai permet d'accepter toutes les connexions qui arrivent sur ce port. Cette commande affaiblit donc la sécurité du processus mais semble, a priori, nécessaire.

Exemple 3 : votre machine est protégée par un firewall, ssh et VNC sont autorisés ET, DE PLUS, vous devez passer par une machine relai

La commande a utiliser est la suivante :

ssh -N -C -L 5999:machine_distante:5900 bruno@machine_relai



Laissez cette connexion tranquille...
Vous pouvez maintenant accéder à VNC depuis votre machine locale à l'adresse "localhost:5999".

Et l'option Reverse ?

It is possible to create a "reverse" ssh tunnel. The reverse tunnel will allow you to create an ssh tunnel from your work computer to your home computer, for example, and then login to your work machine from your home machine even if your work firewall does not permit ssh traffic initiated from your home machine!

For this to work, an ssh server must be installed on your work and home computer, and ssh (TCP port 22) must be allowed outbound from your work computer to your home computer.

$ ssh -R remote_port:localhost:22 your_home_computer

ex. $ ssh -R 2048:localhost:22 home.computer.com

At home, you would then run ssh -p 2048 localhost to log into your work computer via ssh.

Source : www.brandonhutchinson.com/ssh_tunnelling.html


channel 2: open failed: administratively prohibited: open failed



Solution : utiliser les IP !
Sources :
http://blog.fressengeas.net/post/2010/05/19/Solution-to-SSH-tunneling-failure-because-of-%22channel-X%3A-open-failed%3A-administratively-prohibited%22
http://arstechnica.com/civis/viewtopic.php?f=16&t=192186



Générer une clé


ssh-keygen -t rsa


on obtient 2 clés :
- id_rsa (clé privée)
- id_rsa.pub (clé publique)

Et la copier sur le serveur sur lequel on veut se connecter :

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server




Regénérer les clés du serveur



Il est parfois nécessaire de regénérer les clés du serveur...
cf http://fr.wikipedia.org/wiki/Heartbleed

Avec Debian, c'est simple :

rm /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server




Test de connexion ssh en utilisant les clés


ssh -vvv -o PreferredAuthentications=publickey root@machine





Rebond sur une machine



ssh -t bruno@machine1 ssh bruno@machine2



Note sur le "-t"
Source man :
" -t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty."

Si je fais "ssh serveur", le -t s'applique par défaut => une fois la connexion affectuée, j'aurai un terminal.
Cela se vérifie avec la commande who :

machine1:~>who
root pts/1 2012-02-25 08:57 (localhost:12.0)
bruno pts/11 2012-02-28 22:44 (X.X.X.X)



(tty = teletypewriter, la console, pts = pseudo terminaux, les connexions distantes)

Si je fais "ssh commande", le -t ne s'applique pas par défaut => pas de tty alloué
Cela se vérifie avec la commande who :

ssh bruno@machine1 who
root pts/1 2012-02-25 08:57 (localhost:12.0)


Pas de trace de moi...

avec le "-t"

ssh -t bruno@machine1 who
root pts/1 2012-02-25 08:57 (localhost:12.0)
bruno pts/11 2012-02-28 22:45 (X.X.X.X)


Je suis là !

Message d'erreur




Dernières modifs
Systemd (October 24th, 2020)
TP - rsyslogd (June 20th, 2017)
Gestion de la memoire (June 20th, 2017)
Ansible (November 10th, 2016)
Fichiers et systèmes de fichiers (November 8th, 2016)
X (October 20th, 2016)
Obtenir des informations sur le système (October 19th, 2016)

Contact
Pour m'envoyer un mail,
Pour me laisser un commentaire :
richard.brunooo
chez
gmail.com


powered by kure, modified by Bruno