SRV ssh
sudo apt update/upgrade
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh (sudo service sshd enable)
sudo systemctl status ssh (sudo service sshd status)
ip a (si non fixéé…)
- Connexion depuis client linux
ssh user@IP_srv (connexion mdp user)
(pour pouvoir me connecter en ssh avec le compte root, j’ai du changer le fichier /etc/ssh/sshd_config en mettant : exitPermitRootLogin yes systemctl restart sshd)
ssh-keygen (-b 8192) (depuis client vers srv)
ssh-copy-id (-p 222) user@IP_srv - Connexion SSH via PuTTY
Ip debian / Port 22 / connection type SSH - Connexion SSH via OpenSSH client (Win)
Installation OpenSSH client:
Ouvrez PowerShell en mode administrateur et entrez la commande suivante pour installer OpenSSH client :
Add-WindowsCapability -Online -Name OpenSSH.Client~~0.0.1.0 - Verifier que l’installation est ok avec Get-WindowsCap…+ meme commande
Ouvrez l’invite de commande et saisissez la commande suivante pour vous connecter via SSH au serveur :
ssh utilisateur@adresseIPserveur - Configurez le fichier sshd_config :
cp /etc/ssh/sshd_conf /etc/ssh/sshd_conf.bkp
sudo nano /etc/ssh/sshd_config
modif port d’ecoute:
#Port 22
Port 5555
modif config d’authentification:
# Authentification
Protocol 2
AllowUsers tintin boby@romarin #(tintin depuis partout, boby depuis le poste romarin)
AllowGroups Gp_SSH
DenyUsers (Groups) user1 user2@poste1
LoginGraceTime 30 #modif temps pous se logger
PermitRootLogin no #interdir accès Root
Utilisation de clefs privées/publiques :
PasswordAuthentication yes -> no #interdir acces par mdp
RSAAuthentication yes
PubkeyAuthentication yes
sudo systemctl restart sshd
- Test des commandes avec nlles config:
port 5555
ssh –p5555 user@adresseIP
version 1 SSH interdite
ssh -1 user@adresseIP
pas de connexion pour root
ssh –p5555 root@adresseIP
temps de connexion, autres users… - Voir les log sur Debian12
sudo journalctl -u ssh
ou installer rsyslog
voir les echecs de connexion
grep « Invalid » /var/log/auth.log - Gestion des clés SSH sous Linux
Configurer l’authentification par clé SSH implique la génération d’une paire de clés sur votre machine locale (la clé privée reste avec vous et ne doit jamais être partagée) et l’ajout de la clé publique au fichier ~/.ssh/authorized_keys sur le serveur distant. Pour générer la clé et la transférer à un serveur Linux via SSH, il suffit d’entrer les commandes suivantes dans votre terminal :
ssh-keygen
OU mieux : ssh-keygen -b 4096
ssh-copy-id utilisateur@adresse_du_serveur
Exemple d’utilisation plus complète :
ssh-copy-id -p 222 -i ~/.ssh/id_rsa.pub user@remote-host
donner droits testreints à fichier ~/.ssh/authorized_keys :
chmod 700 ~/.ssh -Rf - gestion des clés SSH Windows powershell
pour vérifier si openssh est installé sur Windows :
parametres -> systeme -> fonctionnalites facultatives -> openssh
sinon -> « ajouter fonctionnalite »
générer clé SSH:
ssh-keygen -t ed25519
ls .SSH
activation manuelle des services ssh-agent:
Get-Service ssh-agent | Set-Service -StartupType Manual
activation automatique
Get-Service ssh-agent | Set-Service -StartupType Automatic
démarrer service:
Start-Service ssh-agent
vérifier état:
Get-Service ssh-agent
charger fichiers de clés dans ssh-agent:
SSH-add C:\Users\encan.ssh\id_ed25519 - Transfert via SCP / SFTP
scp (-P XX) test.txt anto@adIPsrv:~ (ou autre répertoire)
sftp –> fileZilla - Envoi d’un fichier via SSH en utilisant SCP
scp /home/mickael/data/Ficher2 root@192.168.10.131:/var/www/
télécharger un fichier du serveur Linux vers la Machine mickael alors que l’on se trouve sur cette même Machine Mickael:
scp root@192.168.10.131:/var/www/Fichier2 /home/mickael/data/
Ici, on retrouve exactement la même construction que notre précédente commande mais nous avons inversé l’ordre des chemins. Cela parce que la source doit toujours se trouver avant la destination.
copier un répertoire via SCP, les fichiers de ce répertoire seront également copiés et réorganisés de la même façon chez la machine cible. Il faut pour cela ajouter l’option « -r »:
scp -r /home/mickael/data/ root@192.168.10.131:/var/www/
Quand le port SSH par défaut (22) est changé, il faut spécifier à SCP le port sur lequel aller discuter, via l’option « -P »:
scp -r -P 7256 /home/mickael/data/ root@192.168.10.131:/var/www/
Si votre client est un Windows, vous pouvez utiliser le logiciel WinSCP. » Protocole de fichier » –> « SCP »
[OU Posh-SSH, le Module Powershell pour faire du SCP
Install-Module -Name Posh-SSH
$credential = Get-Credential
Get-SCPFile -ComputerName ‘mylinuxVm’ -RemoteFile /home/admin/myfile.txt -Credential $credential -LocalFile c:tempmyfile.txt]
Nous pouvons le faire en extrayant le contenu de notre clé SSH publique sur notre ordinateur local et en l’acheminant par une connexion SSH vers le serveur distant. D’autre part, nous pouvons nous assurer que le répertoire ~/.ssh existe bien sous le compte que nous utilisons pour ensuite générer le contenu que nous avons transmis dans un fichier appelé authorized_keys dans ce répertoire.
Nous allons utiliser le symbole de redirection >> pour ajouter le contenu au lieu d’écraser le contenu précédent. Cela nous permettra d’ajouter des clés sans détruire les clés précédemment ajoutées :
cat ~/.ssh/id_rsa.pub | ssh username@remote_host « mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys »
chmod 700 ~/.ssh -Rf
- Transfert SFTP : Secure FTP
fichier de configuration d’OpenSSH :
subsystem sftp /usr/lib/openssh/sftp-server
Sous Linux, en tant que client, la commande « sftp » s’utilise exactement comme la commande « scp ».
WinSCP permet également de gérer les transferts en SFTP. - Transfert SFTP : Secure FTP
SSHFS va nous permettre de monter un répertoire d’une machine Linux sur une autre –> permettre à la machine cliente de voir un répertoire en temps réel alors que celui-ci se situe sur la machine distante. Si une modification est effectuée sur ce répertoire, le client le verra instantanément et il pourra agir dessus comme s’il s’agissait d’un répertoire local. Dans le cas de SSHFS, l’échange qui permet la lecture et l’écriture sur le répertoire est fait sur le réseau en utilisant le protocole SSH.
apt-get install sshfs
mkdir /mnt/data
sshfs mickael@192.168.10.1:/home/mickael/data /mnt/data
Attention, il ne s’agit pas d’une copie, si je démonte le répertoire /mnt/data, les données ne seront plus présentes.
commande « mount » : visualiser les points de montage présents.
umount /mnt/data - Pour se connecter à un serveur Linux depuis un PC avec WIndows, il faut remplacer la commande ssh-copy-id par la commande PowerShell suivante :
Get-Content $env:USERPROFILE.ssh\id_rsa.pub | ssh username@Serveur_IP « cat >> .ssh/authorized_keys »
Pour DP C3, j’ai généré une pair de clé avec putygen, j’ai copié la clé publique dans fichier que j’ai envoyé au serveur via scp. J’ai enregistré la clé privée dans .ssh du client. Puis pour connexion, après avoir entrée l’IP, je clic sur SSH, Auth, cred et je browse la clé privée –> open.
tuto :
Sous « Parameter » et « Number of bits in a generated key » valeur minimale de 2048.
Sous « Actions », puis cliquez sur « Generate ».
cliquez sur « Save the generated key » sous « Actions ».
Vous pouvez enregistrer la clé privée sur votre bureau en utilisant le nom « id_rsa.ppk ».
Le champ sous « Key » ou « Public key for pasting into OpenSSH authorized_keys file: » contient la clé publique.
Clé publique à coller dans le fichier « authorized_keys » OpenSSH
Lancez PuTTY pur vous connecter au serveur distant.
nano ~/.ssh/authorized_keys
Collez la clé publique déjà copiée dans le fichier authorized_keys
chmod 600 ~/.ssh/authorized_keys
Fermer putygen et puty.
Sous « Session » (Session), renseignez le nom de l’hôte ou l’adresse IP du serveur distant correspondant.
Suivez ce chemin : « Connexion » > « SSH » > « Auth ». Cherchez la clé privée « id_rsa.ppk
- Sécurisation : utilisation de fail2ban
