Ssh

De Linuxmemo.

(Différences entre les versions)
(Reverse)
(Sans clef)
 
(15 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 36 : Ligne 56 :
==Scp avec .ssh/config==
==Scp avec .ssh/config==
-
 
  vim .bash_aliases
  vim .bash_aliases
  alias scp="scp -F .ssh/config"
  alias scp="scp -F .ssh/config"
  source .bashrc
  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"'
Outils personnels