Installation
|
pacman -S openssh
|
Serveur
|
systemctl restart sshd
cat /var/log/auth.log
|
/etc/ssh/sshd_config
|
PermitRootLogin prohibit-password
PasswordAuthentication no
X11Forwarding no
UsePAM no ???
AllowUsers user1 user2@192.168.x.y
DenyUsers user1 user2
|
 |
Pour que les modifications soient prises en compte il faut redémarrer le serveur SSH |
Client
Linux
|
ssh login@remote-host -p port 'remote command'
ssh login@remote-host << EOF
pwd
ls -al
EOF
ssh -C -NL 9999:localhost:5900 login@remote-host
|
 |
Pour avoir des couleurs dans la console, il faut configurer le fichier .bashrc de l'hôte |
 |
Pour quitter le terminal en laissant une commande tourner, utiliser disown |
 |
Pseudo-terminal will not be allocated because stdin is not a terminal.
Use ssh -T to disable pseudo-tty allocation. |
Windows
- Settings → Apps → Optional Features → Add a feature → OpenSSH Client → Install
- Sign out and in
Enable SSH Authentication Agent
- Services → OpenSSH Authentication Agent → right-click → Properties
- Startup type = Automatic
- Apply
- Start
Cygwin
Installer openssh
PuTTY
Coller |
clique-droit ou Shift+Ins ou Ctrl+clique-droit+Paste
|
Private key |
Connection → SSH → Auth
|
Home / End |
Connection → Data → Terminal Details → Terminal-type string = linux
|
 |
Utilisez l'installeur qui contient tous les binaires utiles. |
|
pscp user@host:/remote/path/file.txt C:\folder
pscp C:\folder\file.txt user@host:/remote/path/folder
pscp -i C:\path\id_rsa.ppk user@host:/remote/path/file.txt C:\folder
|
Authentification avec une clé SSH
 |
Problème avec les caractères accentués. |
SFTP
Filezilla
Copie de fichiers et de dossiers
|
rsync --remove-source-files compte-distant@serveur-ssh:/chemin/serveur/ssh/fichier-distant /chemin/local
rsync -avz --delete-after /chemin/dossier user@remote-host:/chemin/dossier/
|
 |
rsync doit être installé sur le client et le serveur. |
 |
Utilisation de rsync avec sudo:
Si rsync est utilisé avec sudo, c'est le compte root local qui va tenter de se connecter au serveur ssh.
Dans le cas d'une utilisation avec clé ssh, le compte root ne peut pas débloquer de passphrase, car les passphrases sont stockées dans gnome-keyring qui se déverrouille à la connexion au Desktop Manager.
Dans ce cas il est facilitant de ne pas utiliser de passphrase afin de se connecter directement. |
SCP
Copie de fichiers vers le serveur SSH
|
scp fichier-local compte-distant@serveur-ssh:/chemin/serveur/ssh
scp compte-distant@serveur-ssh:/chemin/serveur/ssh/fichier-distant /chemin/local
|
fingerprint
À la première connexion à un serveur, l'empreinte (fingerprint) de la clé RSA du serveur est affichée afin de vérifier que le serveur auquel on se connecte est bien celui que l'on croit.
|
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
|
Permet une authentification sans mot de passe.
Ajouter la clé publique du client dans les clé autorisées du serveur.
 |
La saisie d'une passphrase lors de la génération de la clé privée nécessitera par la suite de lancer un ssh-agent et d'entrée cette passphrase pour déverrouiller la clé privée. |
|
ssh-keygen -t ed25519 -C "$(whoami)@$(hostname) $(date -I)"
ssh-keygen -o -b 4096 -C "$(whoami)@$(hostname)-$(date -I)"
ssh-copy-id <username>@<ssh-server>
mkdir ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
|
 |
La commande ssh-copy-id ajoute le contenu du fichier ~/.ssh/id_rsa.pub au fichier serveur <userhome>/.ssh/authorized_keys
Le fichier <userhome>/.ssh/authorized_keys peut ainsi contenir plusieurs clés autorisant différent utilisateurs. |
|
ssh-keygen -p
|
Restrictions dans la clé publique
~/.ssh/authorized_keys
|
from="192.168.0.1,192.168.0.*?,*.example.com",
command="/bin/pwd",
,no-port-forwarding,no-x11-forwarding,no-agent-forwarding
ssh-rsa AA...== comment-client-user@client-hostname
|
Permet de mettre en cache la clé privée déchiffrée avec la passphrase et ainsi ne la demander que la première fois.
|
systemctl --user status ssh-agent.service
ssh-add ~/.ssh/id_ed25519
ssh-add -L
ssh-add -D
|
~/.zshenv
|
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent.socket
|
Allows to unlock the keys at login.
|
systemctl --user status gcr-ssh-agent.socket
/usr/lib/seahorse/ssh-askpass my_key
|
~/.zshenv
|
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh
|
Générer les clés
- Lancer PuTTYgen
- Générer une clé privé et publique (RSA ou SSH-2 RSA, 4096 bits)
- Entrer une passphrase (512)
- Sauvegarder la clé publique %HOMEPATH%\ssh\id_rsa.pub et la clé privée %HOMEPATH%\ssh\id_rsa.ppk via les 2 boutons Save
Autoriser la clé publique sur le serveur SSH
- PuTTYgen → copier "Public key for pasting into OpenSSH authorized_keys file"
- Serveur SSH → coller la clé publique dans le fichier ~/.ssh/authorized_keys
- Vérifier que ce fichier n'est accessible que par l'utilisateur chmod 600
Ajouter la clé privée à la session PuTTY
- Session → Créer ou charger une session
- Connection → SSH → Auth → spécifiez le chemin vers la clé privée
- Session → Sauvegarder la session
Auto-login: utilisateur par défaut
- Session → Créer ou charger une session
- Connexion → Data → Auto-login username
- Session → Sauvegarder la session
Pageant
- lancer pageant
- double-cliquer sur l’icône pageant dans la barre des icônes
- Add key → sélectionner la clé privée
Pageant tourne en tache de fond et déverrouille la clé privée au besoin.
Pageant n'enregistre ni l'emplacement de la clé privée ni la passphrase: à la prochaine exécution il faudra recommencer
Il est possible de créer un raccourci pour que la clé privée soit ajoutée au lancement:
"C:\path\to\pageant.exe" "C:\path\to\private_key.ppk"
Désactiver les connexions avec login et mot de passe
/etc/ssh/sshd_config
|
Protocol 2
PasswordAuthentication no
UsePAM no
|
|
sudo systemctl restart sshd
|
Langue
Par défaut les variable LANG et LC_* ne semble pas être définit après une connexion ssh.
Pour forcer leur définition, il faut authoriser le client à envoyer ses valeurs et le serveurs à les recevoir.
/etc/ssh/ssh_config
|
Host *
SendEnv LANG LC_*
|
/etc/ssh/sshd_config
|
AcceptEnv LANG LC_*
|
Erreurs
|
ssh -vvv user@host
sshd -t
sshd -Dddd
|
REMOTE HOST IDENTIFICATION HAS CHANGED!
Le fichier ~/.ssh/known_hosts contient une clé d'identification qui ne correspond pas à la cible.
|
ssh-keygen -R hostname
|
~/.ssh/known_hosts
Contient les identifiants des serveurs SSH connus, afin de s'assurer que le client se connecte bien au bon serveur.
|
ssh-keygen -R serveur_ssh_à_supprimer
|
|
useradd -r -m backup
passwd backup
su backup
mkdir .ssh
nano .ssh/authorized_keys
ssh-keygen -o -b 4096 -C "$(whoami)@$(hostname)-$(date -I)"
rsync -rLp --progress --delete backup@server:/remote-path/folder/ /local-path/folder
|
Monter un système de fichier distant au travers d'une connexion ssh.
|
sudo pacman -S sshfs
systemctl list-units --all | grep fuse
lsmod | grep fuse
sudo modprobe fuse
sshfs user@host:/remote/folder /mount/point
fusermount -u /mount/point
|
/etc/fstab
|
user@host:/remote/folder /mount/point fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,uid=1000,gid=1000,user 0 0
|
Options
|
Explications
|
noauto,x-systemd.automount |
Ne pas monter au démarrage mais à la demande
|
_netdev |
Attend que le réseau soit accessible, utile pour les systèmes de fichiers distants
|
uid=1000 gid=1000 |
Force les uid et gid du système de fichier N’accepte que la forme chiffrée
|
user |
Autorise n'importe quel utilisateur à monter le système de fichiers
|
allow_other |
Allow other users than the mounter (i.e. root) to access the share
|
default_permissions |
Allow kernel to check permissions, i.e. use the actual permissions on the remote filesystem. This allows prohibiting access to everybody otherwise granted by allow_other.
|
idmap=user |
Change le UID du système de fichier par celui de l'utilisateur courant
|
IdentityFile=/home/user/.ssh/id_rsa |
???
|
- allow user to run sudo without password
|
sshfs <user>@<host>:/remote/path /local/path -o sftp_server="sudo /usr/lib/openssh/sftp-server"
|
Connection reset by peer
Ne pas lancer sshfs avec sudo.
|
chocolatey install winfsp sshfs
|
- Accéder au dossier d'une machine distante: \\sshfs\user@host[\path]
- Monter le dossier root d'une machine distante dans un lecteur réseau:
net use S: \\sshfs\user@host\..\..
- Url: \\sshfs\user@host
- Network drive: \\sshfs\user@host\..\..
 |
Ne permet pas la connexion avec une clé privée. |
- installer WinSSHFS
- lancer WinSshFS
Erreur unable to load DLL 'dokan1.dll'
- télécharger le zip de dokan 1.0.5
- extraire Win32\Release\dokan1.dll dans C:\Program Files (x86)\WinSshFS
- installer dokan 1.1.0.2000
 |
Pour la connexion avec une clé privée, utiliser pageant |