Académique Documents
Professionnel Documents
Culture Documents
SSH + SFTP
SSH, également connu sous le nom de Secure Shell ou Secure Socket Shell, est un protocole
réseau qui offre aux utilisateurs, en particulier aux administrateurs système, un moyen sécurisé
d'accéder à un ordinateur via un réseau non sécurisé. SSH fait également référence à la suite
d'utilitaires qui implémentent le protocole SSH. Secure Shell fournit une authentification forte
et des communications de données cryptées entre deux ordinateurs se connectant sur un réseau
ouvert tel qu'Internet. SSH est largement utilisé par les administrateurs réseau pour gérer les
systèmes et les applications à distance, leur permettant de se connecter à un autre ordinateur
via un réseau, d'exécuter des commandes et de déplacer des fichiers d'un ordinateur à un autre.
SSH fait référence à la fois au protocole réseau cryptographique et à la suite d'utilitaires qui
implémentent ce protocole. SSH utilise le modèle client-serveur, connectant une application
client shell sécurisée, la fin à laquelle la session est affichée, avec un serveur SSH, la fin à laquelle
la session tourne. Les implémentations SSH incluent souvent le support des protocoles
d'application utilisés pour l'émulation de terminal ou les transferts de fichiers. SSH peut
également être utilisé pour créer des tunnels sécurisés pour d'autres protocoles d'application,
par exemple, pour exécuter des sessions graphiques du système X Window à distance en toute
sécurité. Un serveur SSH, par défaut, écoute sur le port standard 22 du protocole TCP
(Transmission Control Protocol).
Bien qu'il soit possible d'utiliser SSH avec un nom d'utilisateur et un mot de passe ordinaires
comme identifiants, SSH utilise plus souvent des paires de clés publiques pour authentifier les
hôtes entre eux. Les utilisateurs individuels doivent toujours utiliser leur nom d'utilisateur et
leur mot de passe (ou d'autres méthodes d'authentification) pour se connecter à l'hôte distant
lui-même, mais la machine locale et la machine distante s'authentifient séparément les unes des
autres. Une seule session nécessite deux paires de clés publiques : une paire de clés publiques
pour authentifier la machine distante sur la machine locale et une seconde paire de clés
publiques pour authentifier la machine locale sur la machine distante.
Les connexions SSH ont été utilisées pour sécuriser différents types de communications entre
une machine locale et un hôte distant, y compris l'accès distant sécurisé aux ressources,
l'exécution à distance des commandes, la livraison des correctifs et mises à jour logiciels et
autres tâches administratives ou de gestion.
Les fonctions que SSH active incluent :
• Accès à distance sécurisé aux systèmes ou périphériques réseau compatibles SSH, aussi
bien pour les utilisateurs que pour les processus automatisés ;
• des sessions de transfert de fichiers sécurisées et interactives ;
• des transferts de fichiers automatisés et sécurisés ;
• l'émission sécurisée de commandes sur des dispositifs ou des systèmes distants
• la gestion sécurisée des composants de l'infrastructure réseau.
SSH peut être utilisé de manière interactive pour activer les sessions terminal et devrait être
utilisé à la place du programme Telnet moins sécurisé. SSH est également couramment utilisé
dans les scripts et autres logiciels pour permettre aux programmes et systèmes d'accéder à
distance et en toute sécurité aux données et autres ressources.
Https://doc.ubuntu-fr.org/ssh#installation_du_serveur_ssh
instal de open-ssh-server
sudo apt install openssh-server
en fait le mieux est de faire sur les deux machines pour pouvoir les faire dans les deux
sens
• Copie d’un fichier d’une machine serveur1(IP) vers une autre machine
serveur2(IP):
> scp Login1@Serveur1:Chemin1/NomFichier1
Login2@Serveur2:Chemin2/NomFichier2
• Copie d’un fichier depuis le répertoire courant vers un répertoire du serveur:
> scp Fichier login@serveur:Chemin
• Copie d’un répertoire, avec éventuellement ses sous-répertoires, vers un
répertoire du serveur:
> scp -r Repertoire login@serveur:Chemin
• Copie d’un fichier du serveur vers le répertoire courant:
> scp login@serveur:Chemin/Fichier .
• Copie d’un répertoire du serveur vers un rep local:
> scp -r -p utilisateur@adressip:le/chemin/de/la/source
/le/chemin/du/destinataire
• -r # récursive
-p # préserves les attributs du fichier original
• Copie de plusieurs fichiers
> scp -T ngu@10.40.10.150:/home/ngu/"aa.txt bb.txt
dpkg.log.OLD" .
Utiliser SFTP
/!\ il ne faut pas de commande "echo" dans le .bashrc
sftp utilisateur@adressip
sftp> ?
> ls #on remote
> lls #on local
> cd #on remote
> lcd #on local
> mkdir #on remote
> lmkdir #on local
> ! # retour au local
> exit # retour au remote
TP usage SSH:
Productivité SSH :
L'un des plus importants boosters de productivité lorsque vous utilisez SSH, est de configurer
une configuration qui mémorise tous vos paramètres de connexion dans le fichier'~/.ssh/config'.
Si vous n'avez pas déjà un de ces fichiers, vous pouvez le créer. Le but de ce fichier est qu'au lieu
de taper ça à chaque fois :
ssh robert@192.168.0.123 -p 1800 -i ~/.ssh/my_private_key
Tant que vous avez dans le fichier '~/.ssh/config' du client l’entrée suivante :
Host robert-server
HostName 192.168.0.123
Port 1800
User robert
IdentityFile ~/.ssh/my_private_key
$ ssh 192.168.1.100
Tell GUI applications to be launched on the local screen (so, any graphical program that you run,
will be displayed on the remote computer’s screen):
$ export DISPLAY=:0
Execute GUI Program. For, example lets start Firefox browser that will be launched and
displayed on the remote machine’s screen in which we logged in:
$ firefox "www.shellhacks.com"
Use nohup to prevent a process from being stopped after closing SSH session:
Debian/Ubuntu
$ sudo touch /dev/fuse
$ sudo apt install xfce4 xfce4-goodies gnome-icon-theme
$ sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-
utils
$ sudo apt install xrdp
$ sudo systemctl status xrdp
$ sudo systemctl stop xrdp
$ sudo adduser xrdp ssl-cert
$ sudo systemctl restart xrdp
Assuming you use ufw to manage the firewall, run the following
command to allow access to the Xrdp server from a specific IP
address or IP range, in this example 192.168.1.0/24:
$ sudo ufw allow from 192.168.1.0/24 to any port 3389
If you want to allow access from anywhere (which is highly discouraged for security
reasons) run:
$ sudo ufw allow 3389
$ xfce4-session
via VNC et non seulement VPS il faut installer un server VNC sur le VPS
La première fois avant d'utiliser le serveur VNC lui-même il faudra créer un password
• Vinagre [Linux]
• Real VNC [Windows/OS X/Linux/iOS/Android]
• TightVNC [Windows/OS X/Linux]
• TigerVNC [Linux/Windows/OS X]
Connect to your VNC server by appending :1 to the IP address of your VPS. You’ll have access to
the full desktop!
Note: The default VNC server isn’t very secure, and creates another potential attack vector. Be
sure to check out the resources below for more information about securing your VNC server.
PuTTY :
Productivité SSH :
L'un des plus importants boosters de productivité lorsque vous utilisez SSH, est de configurer
une configuration qui mémorise tous vos paramètres de connexion dans le fichier'~/.ssh/config'.
Si vous n'avez pas déjà un de ces fichiers, vous pouvez le créer. Le but de ce fichier est qu'au lieu
de taper ça à chaque fois :
$ ssh ngu@10.40.10.144 -p 1800 -i .ssh/id_rsa
Vous pouvez taper à la place :
$ ssh ngu-ser
Si vous avez dans le fichier '~/.ssh/config' du client l’entrée suivante :
Host ngu-ser
HostName 10.40.10.144
Port 1800
User ngu
IdentityFile ~/.ssh/id_rsa
Pour verifier l'état des ports, de l'interieur et de l'exerieur voici deux outils
La commande ss sert à voir les ports qui sont actifs même si le FW leur empèchait
d'acceder
C'est une sorte d'audit interne
Bonne pratiques :
1. S'assurer que le service est disponible
2. S'assurer que le pare-feu prend en charge le services
3. Verifier l'accès grace à un systeme distant
4. Regarder le journal du pare-feu au cas où : /var/log/ufw.log
BASTION SSH
Le plus simple est se connecter au bastion en ssh puis, de l'interieur faire une nouvelle
commande ssh pour atteindre les serveursA ou serveurB
Il est aussi possible d'utiliser le flag -J comme Jump pour aller directement au serverA
client> ssh -J user@62.23.55.220 user@192.168.0.10
LE TUNNELING SSH
voir ce tuto
pour faire transiter un protocol htttp dans un tunnel ssh la commande prend la forme :
• "-f" : Permet de mettre la commande SSH en tâche de fond une fois lancée, cela nous
donne la possibilité d'exécuter d'autres commandes une fois que le tunnel SSH est
établie.
• "-L" : C'est l'option qui nous permet d'initialiser le tunnel, son argument prend la forme
"port local : cible en sortie de tunnel : port cible en sortie de tunnel". .
• "-N" : Indique "Do not execute a remote command". C'est une option qui va souvent de
paire avec l'utilisation de l'option "-L".
ssh -f mickael@1.2.3.4 -L 2500:192.168.1.10:80 -N