informatique:logiciels:ssh
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatique:logiciels:ssh [2022/11/03 09:38] – [Séquence d'échappement] pteu | informatique:logiciels:ssh [2024/11/26 09:10] (current) – [SSH Keepalive] pteu | ||
---|---|---|---|
Line 209: | Line 209: | ||
===== Transfert de fichier avec SCP ===== | ===== Transfert de fichier avec SCP ===== | ||
- | **Ssh CoPy** (SCP) est une commande qui permet de transférer des fichiers par une connexion SSH. | + | [[informatique:linux:commandes_linux# |
- | Sous Windows il existe les programmes '' | + | |
- | Sous Linux, il est possible d' | + | |
- | Sous Mac j' | + | |
- | + | ||
- | La syntaxe est la suivante : | + | |
- | scp fichier_local user@serveur.com:/ | + | |
- | Il faut noter qu'un //path// relatif (sans le "/" | + | |
- | + | ||
- | exemple 1 : uploader // | + | |
- | scp test.txt toto@serveur.com: | + | |
- | + | ||
- | exemple 2 : télécharger dans le répertoire courant (.) // | + | |
- | scp toto@serveur.com: | + | |
- | + | ||
- | exemple 3 : uploader l' | + | |
- | scp -r test toto@serveur.com: | + | |
- | + | ||
- | Les paramètres disponibles sont : | + | |
- | * '' | + | |
- | * '' | + | |
- | + | ||
=====Tunnels SSH===== | =====Tunnels SSH===== | ||
Line 348: | Line 326: | ||
</ | </ | ||
- | =====Lister les options du sshd===== | + | =====Lister les options du ssh===== |
Pour lister les paramètres effectifs avec lesquels se lance le démon **sshd** (c'est utile notamment pour voir la valeur des paramètres non spécifiés dans le fichier de configuration ''/ | Pour lister les paramètres effectifs avec lesquels se lance le démon **sshd** (c'est utile notamment pour voir la valeur des paramètres non spécifiés dans le fichier de configuration ''/ | ||
Line 355: | Line 333: | ||
</ | </ | ||
+ | Côté client, on peut afficher les paramètres courants avec l' | ||
+ | <code bash> | ||
+ | ssh -G < | ||
+ | </ | ||
=====Mode debug/ | =====Mode debug/ | ||
Line 439: | Line 421: | ||
=====Connexion SSH via webproxy===== | =====Connexion SSH via webproxy===== | ||
- | Pour se connecter en SSH à travers un proxy web, disons " | + | Pour se connecter en SSH à travers un proxy web, disons " |
<code bash ~/ | <code bash ~/ | ||
Host ssh-server | Host ssh-server | ||
Line 448: | Line 430: | ||
Depuis Windows il est plus facile d' | Depuis Windows il est plus facile d' | ||
+ | |||
+ | <WRAP center round important 80%> | ||
+ | Certaines versions de netcat (nc) ne possèdent pas l' | ||
+ | C'est le cas sous CentOS/ | ||
+ | <code bash> | ||
+ | ProxyCommand nc --proxy-type http --proxy proxy.corp: | ||
+ | </ | ||
+ | </ | ||
+ | |||
=====Connexion SSH par rebond===== | =====Connexion SSH par rebond===== | ||
Line 542: | Line 533: | ||
</ | </ | ||
- | ou, plus pérenne, dans le fichier de préférences du client SSH : | + | Ou, plus pérenne, dans le fichier de préférences du client SSH : |
+ | <code bash ~/ | ||
+ | Host upgrayedd | ||
+ | KexAlgorithms +diffie-hellman-group1-sha1 | ||
+ | </ | ||
+ | |||
+ | Dans mon cas j' | ||
+ | <code bash> | ||
+ | ssh admin@upgrayedd | ||
+ | Unable to negotiate with 10.0.2.240 port 22: no matching host key type found. Their offer: ssh-dss | ||
+ | </ | ||
<code bash ~/ | <code bash ~/ | ||
Host upgrayedd | Host upgrayedd | ||
KexAlgorithms +diffie-hellman-group1-sha1 | KexAlgorithms +diffie-hellman-group1-sha1 | ||
- | # dans mon cas je doit aussi ajouter ça : | ||
HostKeyAlgorithms +ssh-dss | HostKeyAlgorithms +ssh-dss | ||
</ | </ | ||
Line 565: | Line 566: | ||
<code bash> | <code bash> | ||
ssh -1 vieille-croute | ssh -1 vieille-croute | ||
+ | </ | ||
+ | |||
+ | =====Connexion en arrière-plan===== | ||
+ | |||
+ | Dans certains cas il peut être utile de lancer la connexion SSH en background, ce qui permet au terminal de rendre la main tout en conservant la connexion active. Cela se fait avec l' | ||
+ | <code bash> | ||
+ | ssh -f host xterm | ||
+ | </ | ||
+ | |||
+ | Pour faire une redirection de port, il faut ajouter '' | ||
+ | <code bash> | ||
+ | # sans -N | ||
+ | ssh -f -L 5901: | ||
+ | | ||
+ | |||
+ | ssh -f -N -L 5901: | ||
+ | </ | ||
+ | |||
+ | Et si l'on veut fermer la connexion après utilisation ? On ne peut pas, fallait réfléchir avant. | ||
+ | |||
+ | Bon, en fait, il suffit de killer le process SSH qui écoute sur le port redirigé localement, sur le client : | ||
+ | <code bash> | ||
+ | kill -9 $(ss -lnpt | awk ' $4 ~ /:5901$/ {sub(/ | ||
+ | </ | ||
+ | |||
+ | Mais openssh permet de faire les choses proprement, de (au moins) 2 manières : | ||
+ | - ne pas utiliser '' | ||
+ | - utiliser une connexion SSH en mode " | ||
+ | <code bash> | ||
+ | ssh -f -N -M -S < | ||
+ | # (utilisation de la connexion...) puis fermeture : | ||
+ | ssh -S < | ||
+ | </ | ||
+ | |||
+ | source: [[https:// | ||
+ | |||
+ | |||
+ | =====Connexion forcée par mot de passe===== | ||
+ | |||
+ | Pour forcer l' | ||
+ | |||
+ | On peut l' | ||
+ | |||
+ | <code bash> | ||
+ | ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no < | ||
+ | </ | ||
+ | |||
+ | Ces options peuvent se positionner dans le fichier de conf : **~/ | ||
+ | |||
+ | =====Comment transmettre un quote en SSH===== | ||
+ | |||
+ | C'est toujours une galère en informatique pour utiliser les caractères interprétés, | ||
+ | |||
+ | Pour transmettre une apostrophe (ou simple quote en anglais) dans une commande SSH, on ne peut pas juste l' | ||
+ | <code bash> | ||
+ | ssh serveur ls / | ||
+ | |||
+ | bash: -c: ligne 1: fin de fichier (EOF) prématurée lors de la recherche du « ' | ||
+ | </ | ||
+ | |||
+ | Il faut utiliser : | ||
+ | * soit un triple backslash (on " | ||
+ | * un [[https:// | ||
+ | <code bash> | ||
+ | ssh serveur <<END | ||
+ | ls / | ||
+ | END | ||
+ | |||
+ | / | ||
+ | </ | ||
+ | |||
+ | =====Notification sur Signal d'un login SSH===== | ||
+ | |||
+ | Pour recevoir une notification lorsqu' | ||
+ | * une ligne de configuration dans **pam.d** pour catcher l' | ||
+ | * un script générant le message de notification et l' | ||
+ | * un conteneur docker : [[https:// | ||
+ | Ce dernier nécessite l’appairage avec un compte Signal existant. | ||
+ | |||
+ | NB : j'ai rencontré des erreurs avec la version **signal-cli-rest-api: | ||
+ | <code yaml docker-compose.yml> | ||
+ | version: " | ||
+ | services: | ||
+ | signal-cli-rest-api: | ||
+ | # image: bbernhard/ | ||
+ | image: bbernhard/ | ||
+ | container_name: | ||
+ | networks: | ||
+ | - br-sig | ||
+ | environment: | ||
+ | - MODE=native #supported modes: json-rpc, native, normal (by speed order) | ||
+ | ports: | ||
+ | - " | ||
+ | volumes: | ||
+ | - " | ||
+ | |||
+ | networks: | ||
+ | br-sig: | ||
+ | external: true | ||
+ | </ | ||
+ | |||
+ | Ce script basique : | ||
+ | <code bash / | ||
+ | #!/bin/sh | ||
+ | # envoyer une notif signal lors d'un login | ||
+ | NUMBER=" | ||
+ | URL=http:// | ||
+ | MESSAGE=" | ||
+ | |||
+ | if [ " | ||
+ | curl -X POST -H " | ||
+ | -d " | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | Et ce " | ||
+ | <code bash / | ||
+ | session optional pam_exec.so seteuid / | ||
+ | </ | ||
+ | |||
+ | =====SSH Keepalive===== | ||
+ | |||
+ | Afin d' | ||
+ | |||
+ | Cela peut se configurer côté client, dans le fichier **~/ | ||
+ | <code bash ~/ | ||
+ | Host serveur-ssh | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Comme d'hab les paramètres peuvent aussi se définir au moment de la commande SSH avec l' | ||
+ | <code bash> | ||
+ | ssh -o ServerAliveInterval=300 -o ServerAliveCountMax=2 serveur-ssh | ||
+ | </ | ||
+ | |||
+ | Côté serveur, cela se définit dans le fichier **/ | ||
+ | <code bash / | ||
+ | ClientAliveInterval 300 | ||
+ | ClientAliveCountMax 2 | ||
</ | </ | ||
====== Liens ====== | ====== Liens ====== | ||
[[http:// | [[http:// |
informatique/logiciels/ssh.1667468303.txt.gz · Last modified: 2022/11/03 09:38 by pteu