Outils pour utilisateurs

Outils du site


Panneau latéral

linux:ssh (lu 110125 fois)

Ceci est une ancienne révision du document !


SSH

Définition

SSH est un protocol crypté et donc sécurisé.
Son utilisation est indispensable à l’administration d’un serveur linux.

Touches magiques

Bloqué sur une connexion ssh avec un Ctrl+C ou Ctrl+D qui ne marche pas ?
Faite un ~. (AltGr+é puis le point du pavé numérique), la connexion sera interrompu

Besoin de rediriger un port après connexion ?
Faite un ~C (AltGr+é puis maj+c), un shell ssh apparait, tapez help pour plus d’info

Configuration

/etc/ssh/sshd_config

Si la demande de Password est longue à s'afficher

Ajouter cette option dans le fichier de config.

UseDNS no

Partage de clé public

Pour se connecter via ssh ou scp sans avoir à taper le mot de passe.

Sur la machine client, tapez la commande

ssh-keygen -t dsa

Afin de générer un fichier ~/.ssh/id_dsa.pub qui sera votre clé public.

1ère méthode

Copier ce fichier sur le serveur ssh

scp ~/.ssh/id_dsa.pub user1@serveur:/tmp/.

Ensuite sur votre serveur, connectez vous en user1 et ajoutez la clé public à votre fichier d’authorisation

user1:$ cat /tmp/id_dsa.pub >> /home/user1/.ssh/authorized_keys

Il y a parfois un 2 à authorized_keys

2eme méthode

Utiliser la commande ssh-copy-id

ssh-copy-id -i chemin/to/id_dsa.pub user@serveurDistant.com

si le port ssh est différent (n’oubliez pas les guillemets)

ssh-copy-id -i chemin/to/id_dsa.pub "user@serveurDistant.com -p 45632"

Le mot de passe sera demandé puis un message disant que tout va bien

user@serveurDistant.com's password:
Now try logging into the machine, with "ssh 'user@serveurDistant.com -p 45632'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Et voila !!

Vérification si ca ne marche pas

Vérifiez sur le serveur que votre fichier de config /etc/ssh/sshd_config comporte la ligne

PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

Le cas échéant, redémarrez le serveur ssh

/etc/init.d/ssh restart

Et voila ;)

Pour copier un fichier sans demande de mot de passe, utilisez l’option -B :

scp -B fichier_a_copier user@serveur:/dossier/.

Dans le cas ou on a plusieurs serveurs avec une meme adresse ip mais des ports différents

Il arrive que derrière un routeur, on a plusieurs serveurs ssh accessible depuis des ports différents. Du coup le client ssh s’affole avec des warnings disant ATTENTION ce serveur à la même ip que l’autre mais son empreinte est différente !! Dans ce cas, créé un fichier dans le répertoire de l’utilisateur du client /home/user/.ssh/config et mettez une exception

Host serveurSSH.com
   CheckHostIP no
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Si vous un message d'erreur : SSH Authentication refused: bad ownership or modes for directory

Cela signifie que votre répertoire .ssh et votre fichier authorized_keys n’ont pas les bons droits.

Vous devez les configurez comme ci-dessous

chmod 700 /home/your_user/.ssh
chmod 600 /home/your_user/.ssh/authorized_keys

Sinon vous pouvez désactiver le mode strict de votre serveur ssh dans le fichier de config.

StrictModes off

Créer un tunnel SSH

Scenario: Vous voulez vous connecter à un serveur mysql sur le serveur externe **toto-externe.com** à partir de votre machine **toto.local**.

1. Sur toto.local:

ssh -L 3307:localhost:3306 username@toto-externe.com

Un tunnel sera ouvert avec un nouveau port en écoute sur toto.local:3307 qui sera redirigé sur le port localhost:3306 de la machine toto-externe.com

2. Maintenant, sur toto.local, connectez-vous à mysql:

mysql -u username -p -h 127.0.0.1 -P 3307 databasename

Le serveur mysql de toto-externe.com pensera que cette connexion vient de localhost de toto-externe.com

Scenario: Vous voulez vous connecter à un serveur mysql **mysql-externe.com** accessible uniquement par le serveur externe **toto-externe.com** à partir de votre machine **toto.local**.

1. Sur toto.local:

ssh -L 3307:mysql-externe.com:3306 username@toto-externe.com

Un tunnel sera ouvert avec un nouveau port en écoute sur toto.local:3307 qui sera redirigé sur le port mysql-externe.com:3306 depuis la machine toto-externe.com

2. Maintenant, sur toto.local, connectez-vous à mysql:

mysql -u username -p -h 127.0.0.1 -P 3307 databasename

Le serveur mysql de mysql-externe.com pensera que cette connexion vient de toto-externe.com

Scenario: Votre serveur mysql est maintenant sur **toto.local** et **toto-externe.com** à besoin de s'y connecter car la sienne est tombé en panne.

1. Sur toto.local:

ssh -R 3306:localhost:3306 username@toto-externe.com

Un nouveau port sera ouvert sur toto-externe.com:3306 qui pointera sur toto.local:3306. Un moyen simple de mettre à disposition une base mysql sur un serveur sans l’installer.

Vous pouvez remplacer localhost par une machine accessible par toto.local

Encore plus d’explication ⇒ http://fr.openclassrooms.com/informatique/cours/mise-en-place-d-un-tunnel-tcp-ip-via-ssh

Partager un répertoire distant via SSH

Avec sshfs on peut monter un répertoire distant dans un répertoire local via ssh donc hyper sécurisé.

Pour ce faire, installé le paquet sshfs et assurez vous d’ajouter votre compte utilisateur dans le groupe fuse

adduser toto fuse

Ensuite, créer votre répertoire de montage, par exemple /home/toto/monPCdistant

Lancez la commande suivante

sshfs UserDistant@PCdistant:/repertoireAmonter /home/toto/monPCdistant/

et voila ;)

source ⇒ http://www.generation-linux.fr/index.php?post/2009/04/14/Monter-un-repertoire-distant-avec-SSH2

Chrooter les utilisateurs en SFTP / SSH

Voir → http://formation-debian-testing.via.ecp.fr/ftp.html#id289286

Créer un utilisateur

# adduser toto
Ajout de l'utilisateur « toto » ...
Ajout du nouveau groupe « toto » (1001) ...
Ajout du nouvel utilisateur « toto » (1001) avec le groupe « toto » ...
Création du répertoire personnel « /home/toto »...
Copie des fichiers depuis « /etc/skel »...
Entrez le nouveau mot de passe UNIX : 
Retapez le nouveau mot de passe UNIX : 
passwd : le mot de passe a été mis à jour avec succès
Modification des informations relatives à l'utilisateur toto
Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
	Nom complet []: 
	N° de bureau []: 
	Téléphone professionnel []: 
	Téléphone personnel []: 
	Autre []: 
Cette information est-elle correcte ? [O/n]

Pour chrooter toto, son répertoire home doit appartenir à root

cd /home
ls -l
drwxr-xr-x  2 toto    toto                4096 16 janv. 08:44 toto

chown root toto
ls -l
drwxr-xr-x  2 root    toto                4096 16 janv. 08:44 toto

Modifier la config du serveur ssh :

Pour limiter au sftp

Match User toto
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand internal-sftp
        ChrootDirectory %h
linux/ssh.1404340959.txt.gz · Dernière modification: 03-07-2014 00:42 (modification externe)