Ssh : Différence entre versions

De ArchwikiFR
m (Robot : Retiré depuis Catégorie:Migration)
(Démarrage du service : utilisation du template {{rc}})
Ligne 83 : Ligne 83 :
  
 
== Démarrage du service ==
 
== Démarrage du service ==
/etc/rc.d/sshd start
+
{{rc|sshd}}
  
 
-> [[rc.conf#Services|/etc/rc.conf]] pour un démarrage en automatique.
 
-> [[rc.conf#Services|/etc/rc.conf]] pour un démarrage en automatique.
 
  
 
== Connection au serveur ==
 
== Connection au serveur ==

Version du 17 mai 2011 à 23:02


Le SSH (Secure SHell) est un protocole qui permet d’établir une connexion sécurisée avec un autre ordinateur.

Installation

Le client/serveur le plus populaire sous GNU/Linux est OpenSSH, ça tombe bien, c'est ce qui est proposé par Arch Linux:

 pacman -S openssh

Configuration

Client

Le client se configure à l'aide du fichier /etc/ssh/ssh_config.

man ssh_config

Serveur

Configuration dans le fichier /etc/ssh/sshd_config.

man sshd_config

Brièvement, quelques exemples:

Option Valeur Description
PermitRootLogin no évite la connection root
PasswordAuthentication no désactive la connection par mot de passe
PermitEmptyPasswords no désactive les mots de passe vide
UsePAM no désactive la connection par le biais du module PAM
AllowUsers votre_login second_login restreint l'accès aux utilisateurs indiqués uniquement
AllowGroups votre_groupe restreint l'accès aux groupes indiqués uniquement
DenyUsers test guest admin root snort apache nobody interdire l'accès à certains users, pour les paranos...
DenyGroups test guest admin root snort apache nobody interdire l'accès à certains groupes, pour les paranos...
MaxStartups 1 Limite le nombre de tentatives de connections concurentes à 1 (10 par défaut)

/etc/hosts.*

Sur le serveur, les fichiers /etc/hosts.allow et /etc/hosts.deny permettent de contrôler l'accès: /etc/hosts.allow:

# donne l'accès à tous
sshd: ALL

# OU seulement à une ip
sshd: 192.168.0.1
# OU à un bloc d'ip
sshd: 10.0.0.0/255.255.255.0
# OU à un schéma d'ip
sshd: 192.168.1.

Le /etc/hosts.deny par défaut:

ALL:ALL

Utilisation

Démarrage du service

/etc/rc.d/sshd start

-> /etc/rc.conf pour un démarrage en automatique.

Connection au serveur

Basique

ssh utilisateur@serveur

X11 Forwarding

Connection avec possibilité de lancer des applications graphique:

ssh -Y utilisateur@serveur

Clé publique/privée

Vous pouvez éventuellement vous passer du mot en passe en créant une clé, exemple avec une clé DSA:

 ssh-keygen -t dsa

Votre clé sera générée en 1024 bits dans le dossier $HOME/.ssh/, pour la mettre en place, il vous suffit de l’exporter sur le serveur SSH:

ssh-copy-id -i ~/.ssh/id_dsa.pub utilisateur@serveur
Astuce : ssh-copy-id n'est qu'un script qui copie le contenu de la clé dans le bon fichier avec les bonnes permissions.

Par contre la commande ne prends pas les paramètres habituels de ssh tel que le port par exemple; pour contourner, il suffit d'entourer par des ':

ssh-copy-id -i ~/.ssh/id_dsa.pub '-p port utilisateur@serveur'

On peut aussi la transférer sur un support amovible ou avec un autre moyen de copie:

cat emplacement_du_fichier >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Votre clé est maintenant en place, une connection ne devrait plus demander de mot de passe.

Informations de connection

Il est possible de sauvegarder les informations qu'on tape à chaque fois si on se connecte souvent au même serveur dans le fichier $HOME/.ssh/config, exemple:

Host serveur_perso
    HostName x.x.x.x
    Port port_particulier
    User moimeme

Ainsi, un:

ssh -p port_particulier moimeme@x.x.x.x

pourra être remplacé par:

ssh serveur_perso

Système de fichier distant

SSH à l'aide de sshfs permet de monter un dossier distant:

pacman -S sshfs
modprobe fuse
Note : sshfs utilise fuse, vous pouvez le rajouter au modules chargés au démarrage: /etc/rc.conf.
mkdir ~/dossier_distant
sshfs utilisateur@serveur:dossier_sur_serveur ~/dossier_distant

Pour démonter le dossier, lancez la commande suivante:

fusermount -u ~/dossier_distant

Tunnel Socks

Vous pouvez utiliser ssh pour faire transiter votre trafic réseau par un tunnel. Prenons par exemple le cas où vous avez un serveur ssh accessible depuis l'extérieur et que vous êtes connecté à un réseau wifi non sûr:

ssh -ND 8888 utilisateur@serveur

Une fois la commande lancée, il faut soit configurer les applications pour passer par ce tunnel, soit utiliser un programme tel que tsocks.

Modifier le fichier $HOME/.tsocks.conf comme suit:

server = localhost
server_port = 8888

puis lancez par exemple midori comme ceci:

TSOCKS_CONF_FILE=$HOME/.tsocks.conf tsocks midori
Note : La variable TSOCKS_CONF_FILE peut bien sûr être exportée dans le .bashrc par exemple. Par défaut tsocks utilise le fichier de configuration /etc/tsocks.conf.

Accès à un serveur local

SSH permet de faire suivre un service local au réseau du serveur vers le client, un exemple concret serait par exemple de pouvoir accèder en VNC à une machine sur le réseau local du serveur:

ssh -L 5901:ip_machine:5900 utilisateur@serveur

Il suffit ensuite de taper:

vncviewer localhost:5901

Dans le cas contraire où on voudrait que ça soit le serveur qui accède à un service du réseau local du client, il suffit de taper:

ssh -R 5900:ip_machine:5901 utilisateur@serveur