Ssh
De Linuxmemo.
(Différences entre les versions)
(→Reverse) |
(→Sans clef) |
||
| (16 versions intermédiaires masquées) | |||
| Ligne 8 : | Ligne 8 : | ||
== Client == | == Client == | ||
| - | |||
=== Config par défaut === | === Config par défaut === | ||
| - | |||
/etc/ssh/ssh_config | /etc/ssh/ssh_config | ||
| + | === ~/.ssh/config tab-completion === | ||
| + | ~/.bash_completion | ||
| + | |||
| + | _ssh_config_hosts() { | ||
| + | local cur | ||
| + | COMPREPLY=() | ||
| + | cur=${COMP_WORDS[COMP_CWORD]} | ||
| + | if [ $COMP_CWORD -eq 1 ] && [ -f ~/.ssh/config ]; then | ||
| + | COMPREPLY=( $( compgen -W '$( sed -ne "s/^Host=\(.*\)$/\1/p" ~/.ssh/config )' -- $cur ) ) | ||
| + | fi | ||
| + | return 0 | ||
| + | } && | ||
| + | complete -o default -F _ssh_config_hosts ssh | ||
== Dépannage == | == Dépannage == | ||
| Ligne 23 : | Ligne 34 : | ||
* les clés publiques 644 (rw pour l'utilisateur, read pour le groupe et les autres). | * les clés publiques 644 (rw pour l'utilisateur, read pour le groupe et les autres). | ||
* Il faut aussi vérifier que chaque clé tient sur une ligne dans authorized_keys (même si elle apparait sur plusieurs ligne a l'écran, dans le fichier elle ne correspond qu'à une ligne). | * Il faut aussi vérifier que chaque clé tient sur une ligne dans authorized_keys (même si elle apparait sur plusieurs ligne a l'écran, dans le fichier elle ne correspond qu'à une ligne). | ||
| + | |||
| + | ==Tunnel== | ||
| + | Il existe 3 approches: | ||
| + | -L locale pour rediriger un port distant vers une destination (machine) locale | ||
| + | -R distante (remote) pour rediriger un port local vers une destination (machine) distante | ||
| + | -D dynamique pour un transfert de port dynamique basé sur SOCKS | ||
| + | |||
| + | ssh -L [port d'entrée du tunnel]:[adresse_client]:[port de sortie du tunnel] [utilisateur@adresse_du_serveur] | ||
| + | ssh -L 2080:localhost:80 utilisateur@serveurweb.org | ||
==Reverse== | ==Reverse== | ||
| Ligne 34 : | Ligne 54 : | ||
sur local (maison) | sur local (maison) | ||
ssh -p 22222 user_boulot@127.0.0.1 | ssh -p 22222 user_boulot@127.0.0.1 | ||
| + | |||
| + | ==Scp avec .ssh/config== | ||
| + | vim .bash_aliases | ||
| + | alias scp="scp -F .ssh/config" | ||
| + | source .bashrc | ||
| + | ==x11 forwarding avec rebond== | ||
| + | Activer le X11Forwarding sur tout les serveurs | ||
| + | sshd_config (client --> rebond --> serveur): | ||
| + | X11Forwarding yes | ||
| + | Activer le X11Forwarding sur tout les client | ||
| + | ssh_config (client --> rebond --> serveur): | ||
| + | ForwardAgent yes | ||
| + | ForwardX11 yes | ||
| + | ForwardX11Trusted yes | ||
| + | lancer la connexion sur le client: | ||
| + | ssh -t relais ssh -p22222 -X serveur | ||
| + | lancer l'application distante | ||
| + | gedit | ||
| + | ==Tunnel HTTP pour faire du SSH== | ||
| + | *Sur le serveur (distant)mise en écoute sur la port 80 avec redirection sur le port 22 | ||
| + | sudo apt-get install httptunnel | ||
| + | sudo hts --forward-port xx.xx.xx.xx:22 80 | ||
| + | où xx.xx.xx.xx est l'adresse du serveur ssh | ||
| + | *Sur la machine client mise en écoute sur le port 2222 avec redirection vers le serveur ssh sur le port 80 | ||
| + | sudo apt-get install httptunnel | ||
| + | htc --forward-port 2222 yy.yy.yy.yy:80 | ||
| + | où yy.yy.yy.yy est l'adresse de la machine client | ||
| + | htc -P zz.zz.zz.zz --proxy-authorization USER:PASSWORD --forward-port 2222 yy.yy.yy.yy:80 | ||
| + | si il y a un proxy où zz.zz.zz.zz est son adresse | ||
| + | *démarrage du programme client | ||
| + | ssh localhost -p 2222 | ||
| + | ==Sans clef== | ||
| + | ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no user@server | ||
| + | Ou dans .ssh/config | ||
| + | Host camsud | ||
| + | HostName 192.168.0.62 | ||
| + | User admin | ||
| + | PreferredAuthentications=password | ||
| + | PubkeyAuthentication=no | ||
| + | |||
| + | ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-dss -v root@xx.xx.xx.xx | ||
| + | |||
| + | ==Rebond== | ||
| + | http://sshmenu.sourceforge.net/articles/transparent-mulithop.html | ||
| + | |||
| + | ==SSH su commande== | ||
| + | ssh -t host 'su - -c "/opt/sun/comms/mta/messaging/bin/imsimta qm directory -envelope"' | ||
Version actuelle en date du 26 octobre 2022 à 13:37
Sommaire |
[modifier] Serveur
[modifier] Config
/etc/ssh/sshd_config
[modifier] Client
[modifier] Config par défaut
/etc/ssh/ssh_config
[modifier] ~/.ssh/config tab-completion
~/.bash_completion
_ssh_config_hosts() {
local cur
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
if [ $COMP_CWORD -eq 1 ] && [ -f ~/.ssh/config ]; then
COMPREPLY=( $( compgen -W '$( sed -ne "s/^Host=\(.*\)$/\1/p" ~/.ssh/config )' -- $cur ) )
fi
return 0
} &&
complete -o default -F _ssh_config_hosts ssh
[modifier] Dépannage
[modifier] Droits sur les cles
Il faut vérifier les droits sur les clés, SSH nécessite que:
- le dossier .ssh ait les permissions 700 (rwx pour l'utilisateur, rien pour le groupe et les autres),
- les clés privées ainsi que authorized_keys 600 (rw pour l'utilisateur, rien pour le groupe et les autres)
- les clés publiques 644 (rw pour l'utilisateur, read pour le groupe et les autres).
- Il faut aussi vérifier que chaque clé tient sur une ligne dans authorized_keys (même si elle apparait sur plusieurs ligne a l'écran, dans le fichier elle ne correspond qu'à une ligne).
[modifier] Tunnel
Il existe 3 approches:
-L locale pour rediriger un port distant vers une destination (machine) locale -R distante (remote) pour rediriger un port local vers une destination (machine) distante -D dynamique pour un transfert de port dynamique basé sur SOCKS
ssh -L [port d'entrée du tunnel]:[adresse_client]:[port de sortie du tunnel] [utilisateur@adresse_du_serveur] ssh -L 2080:localhost:80 utilisateur@serveurweb.org
[modifier] Reverse
sur distant (derriere le FW au boulot)
ssh-agent ssh-add ssh -NR 22222:localhost:22 user_maison@maison ou bien avec autossh plutôt autossh -i /path/to/privateKey.rsa -f -NR 22222:localhost:22 user_maison@maison
sur local (maison)
ssh -p 22222 user_boulot@127.0.0.1
[modifier] Scp avec .ssh/config
vim .bash_aliases alias scp="scp -F .ssh/config" source .bashrc
[modifier] x11 forwarding avec rebond
Activer le X11Forwarding sur tout les serveurs
sshd_config (client --> rebond --> serveur): X11Forwarding yes
Activer le X11Forwarding sur tout les client
ssh_config (client --> rebond --> serveur): ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes
lancer la connexion sur le client:
ssh -t relais ssh -p22222 -X serveur
lancer l'application distante
gedit
[modifier] Tunnel HTTP pour faire du SSH
- Sur le serveur (distant)mise en écoute sur la port 80 avec redirection sur le port 22
sudo apt-get install httptunnel sudo hts --forward-port xx.xx.xx.xx:22 80
où xx.xx.xx.xx est l'adresse du serveur ssh
- Sur la machine client mise en écoute sur le port 2222 avec redirection vers le serveur ssh sur le port 80
sudo apt-get install httptunnel htc --forward-port 2222 yy.yy.yy.yy:80
où yy.yy.yy.yy est l'adresse de la machine client
htc -P zz.zz.zz.zz --proxy-authorization USER:PASSWORD --forward-port 2222 yy.yy.yy.yy:80
si il y a un proxy où zz.zz.zz.zz est son adresse
- démarrage du programme client
ssh localhost -p 2222
[modifier] Sans clef
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no user@server
Ou dans .ssh/config
Host camsud HostName 192.168.0.62 User admin PreferredAuthentications=password PubkeyAuthentication=no
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-dss -v root@xx.xx.xx.xx
[modifier] Rebond
http://sshmenu.sourceforge.net/articles/transparent-mulithop.html
[modifier] SSH su commande
ssh -t host 'su - -c "/opt/sun/comms/mta/messaging/bin/imsimta qm directory -envelope"'