Ceci est une ancienne révision du document !
SSH est un protocol crypté et donc sécurisé.
Son utilisation est indispensable à l’administration d’un serveur linux.
/etc/ssh/sshd_config
Le man en français http://www.delafond.org/traducmanfr/man/man5/sshd_config.5.html
Ajouter cette option dans le fichier de config.
UseDNS no
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.
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
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é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/.
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
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
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
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
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
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
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