Skip to content

Instantly share code, notes, and snippets.

@jbourassa
Last active August 29, 2015 13:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jbourassa/8772265 to your computer and use it in GitHub Desktop.
Save jbourassa/8772265 to your computer and use it in GitHub Desktop.
Notes de “SSHez-vous?”, présentation par @jbourassa et @j15e au OpenCode XVIII

SSH

Basic intro

ssh user@host -p PORT

ssh user@host __command__

Config file (~/.ssh/config)

Info de base

  • Host (alias)
  • User
  • Port
  • HostMame
  • IdentityFile

Speed gain

time ssh rita ls
Host *
    # don't try to authenticate with Kerberos
    GSSAPIAuthentication no
    GSSAPIKeyExchange no
    # persist the ssh connection for 5 minutes
    # subsequent ssh connections respond faster because its reusing an existing connection
    ControlMaster auto
    ControlPath ~/.ssh/master-%r@%h:%p
    ControlPersist 5m
    
    # Pas sécure trop trop, mais + rapide
    CheckHostIP no


# Pas mal plus rapide maintenant!
time ssh rita ls

Autres options pour épater la gallerie

# Beau dessins
VisualHostKey yes

+--[ RSA 2048]----+
|      o   oo     |
|     + o oE .    |
|    o . oo       |
|     .  o.       |
|      ..S        |
|      ..         |
|     o  .        |
|    o.. .o..     |
|   ....o**+o.    |
+-----------------+

SCP

scp rita:files/file1.txt ~/Desktop

C'est tanant taper les paths au complet, utilisons plutôt la complétion scp avec...

source /usr/local/etc/bash_completion


# Récursif
scp rita:files/* ~/Desktop/files_from_rita/
scp -r rita:files/ ~/Desktop/files_from_rita

# Conserver les permissions et temps
scp -p rita:some/ ~/Desktop/

# Ouvrir dans vim
vim scp://rita/files/file2.txt

# SCP moins sécure mais plus rapide
scp -c blowfish rita:files/ ~/Desktop/

# SCP pas sécure pentoute mais plus rapide
scp -c none rita:files/ ~/Desktop/

# Direct d'un serveur à l'autre
scp rita:/source/ armand:/dest/

# Limite de bandwith (ex. 56k)
scp -l 56 rita:/source/ armand:/dest/


# D'un serveur à l'autre via local
# (ex. 2 réseaux qui peuvent pas se parler directement)
scp -3 rita:/source/ goerge-en-prison:/dest/

Ok, on fait quoi avec ça?

ssh rita 'mysqldump opencode -u root -p_PW_'
ssh rita 'mysqldump opencode -u root -p_PW_' > db.sql
ssh rita 'mysqldump opencode -u root -p_PW_' | mysql -u root opencode


ssh rita -t htop

sshfs

brew install sshfs

sshfs rita: ~/Desktop/rita_fs/

ForwardAgent / Proxy

ForwardAgent: fait suivre ton accès sur la machine, permet donc de SSHer vers une autre machine. Par la bande, ça permet de faire des opérations git via ssh; c'est très utile pour déployer (ie: avec Capistrano)

ssh-add
ssh -A rita
ssh -A user@other_server

Automatiquement passer par une SERVER_1 pour atteindre SERVER_2. Autrement dit, ssh __ALIAS__ connecte à SERVER_2 en passant par SERVER_1 Usecase : firewall whitelist ip only + ip variable

Host __ALIAS__
    User SERVER_2_USER
    HostName SERVER_2_HOST
    ProxyCommand ssh SERVER_1_CONFIG -W %h:%p

Socks Proxy

Ou comment avoir l'air d'un américain n'importe où dans le monde

ssh -ND 9999 __machine___

Script qui setup le proxy automatiquement sur OSX: greecard

Alternatives à OpenSSH?

Dropbear : pour embeded-os (arduino, routeurs, etc, mais compile aussi sur OS X)

https://matt.ucc.asn.au/dropbear/dropbear.html

ZOC : GUI propriétaire

http://www.emtec.com/zoc/

SecureCRT : GUI propriétaire

http://www.vandyke.com/products/securecrt/mac_osx.html

@sylvainfilteau
Copy link

Dans la section "Ok, on fait quoi avec ça?", la troisième commande je pense que ça devrit être un pipe et non une redirection :

ssh rita 'mysqldump opencode -u root -p_PW_' | mysql -u root opencode

La redirection inverse est plus touché quand tu le sais pas :

mysqldump opencode -u root -p_PW_ | ssh rita 'cat | mysql -u root opencode'
mysqldump opencode -u root -p_PW_ | ssh rita 'cat > db.sql'

Il y a aussi la compression live du flux SSH avec l'option -C, probablement plus safe que de changer de cipher

Ce lien est intéressant aussi pour faire un proxy à travers un tunel SSH. C'est pour OSX seulement mais j'imagine que c'est possible d'adapter pour Linux: https://github.com/melvinsh/osx-proxy/

@jbourassa
Copy link
Author

^ Nice catch, merci.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment