Forum Linux.général Utilisation pratique d'openssh

Posté par  .
Étiquettes : aucune
3
25
mar.
2010
Salut,

pour mon travail, je suis amené à utiliser openSSH à outrance et à travailler beaucoup sur des serveurs distants.

Est-ce que c'est possible que vous me disiez si vous avez des trucs et astuces pour utiliser ssh sur un serveur distant. Pour l'instant, je suis seulement en ligne de commande, mais je me demande des choses à propos de GNU screen par exemple, que je n'ai jamais utilisé, ou encore de navigateurs de fichiers à travers ssh, ou des commandes pratiques.

Pour l'instant, j'en suis resté au couple ssh/scp, mais ce n'est pas ce qu'il y a deplus ergonomique.

Merci beaucoup pour vos conseils.
  • # autossh + screen

    Posté par  (site web personnel, Mastodon) . Évalué à 3.

    autossh et screen te permettent de récupérer facilement ta session si ta connexion coupe (par ex. si tu as une IP dynamique). Pour cela, tu peux regarder http://www.linux.com/archive/feature/134133 ou http://www.usenix.org/events/fast07/tech/schroeder/schroeder(...) . Exemple:

    autossh -t machine screen -DR

    Après, le reste, ce sont les outils en ligne de commande tels que tu les connais sans doute déjà. Pense à regarder du coté de man ssh_config et man screen, c'est d'une richesse insoupçonnée :)
    • [^] # Re: autossh + screen

      Posté par  . Évalué à 3.

      personnellement pour screen je fais
      screen -RdS un-nom

      il faut faire ctrl+a ctrl+d pour se detacher de ce terminal et laisser le screen tourner en tache de fond.

      pour s'y reconnecter (via le nom mis plus haut):
      screen -RdS un-nom
    • [^] # Re: autossh + screen

      Posté par  (site web personnel) . Évalué à 3.

      Dans le ssh config, je conseillerais de regarder Control Master :

      Host *
        ControlPath ~/.ssh/master-%r@%h:%p
        ControlMaster auto

      me permet quand j'ai une session ssh ouverte de la réutiliser si je fais un autre ssh ou scp sur la même machine (d'où gros gain de vitesse y compris sur la complétion).

      Sinon, ssh-agent est indispensable (de concert avec ssh-keygen, ssh-copy-id et enfin ssh-add)

      Et enfin, les Escape Characters (en particulier ~C qui donne la possibilité d'ouvrir des tunnels à la volée).
  • # diverses facons de gerer les fichiers

    Posté par  . Évalué à 2.

    en ligne de commande :

    scp mon_fichier_local user@machine:/chemin/vers/fichier
    tu peux evidemment ramener un fichier qui se trouve sur ton serveur en inversant la source et le serveur ( scp user@machine:/chemin/vers/fichier mon_fichier_local )


    rsync -a --progress SOURCE DESTINATION
    pour rsync source et destination peuvent etre des fichiers locaux, des dossiers, ou des serveurs ssh

    sshfs user@machine:/chemin/vers/dossier dossier_de_montage
    qui va activer le "dossier" de ton serveur
    dans le "dossier_de_montage" de ta machine locale


    en interface graphique :

    nautilus inclus un couche sshfs dans ses menus permettant de creer et monter des dossiers distants en local

    filezilla (et probablement d'autre logiciels FTP) savent gerer le SFTP qui est en fait FTP sur SSH (et donc via le port 22)
  • # Clef, Konqueror

    Posté par  (site web personnel) . Évalué à 3.

    J'utilise ssh (presque) toujours avec une authentification par clefs (et password désactivés) (cela évite de laisser des chances aux attaques standard sur les mots de passe). En plus, j'économise l'entrée d'un mot de passe à chaque connexion...

    Après, pour ce qui est de transférer des fichiers, j'utilise parfois konqueror via son support de sftp (donc on se balade comme dans un système de fichier local). J'ai quelques liens ssh dans mes bookmarks, donc un seul clic et je suis dessus.

    Mathias
  • # Midnight commander

    Posté par  . Évalué à 3.

    mc de son petit nom, est un gestionnaire de fichier en mode texte. Inspiré du vénérable norton commander (du temps du DOS), c'est un excellent gestionnaire de fichiers même en session graphique car il se contrôle entièrement au clavier (même s'il supporte le pointeur pour activer les différents éléments d'interface).
    À mon avis c'est un incontournable!
  • # NX - !M - No Machine

    Posté par  . Évalué à 2.

    Perso, je suis fan de NX qui permet d’obtenir un bureau distant persistant (un peu comme screen, mais en graphique) via une connexion SSH.

    Pour plus d'info, voir le site de la société (http://www.nomachine.com/), mais surtout le site de l'implémentation libre (http://freenx.berlios.de/).
  • # ssh : bien plus qu'un telnet crypté

    Posté par  . Évalué à 1.

    Sans même rentrer dans le sujet des tunnels (que j'utilise peu), je suis fan de l'exécution de commande non interactive et de redirection de l'entrée et la sortie standard par ssh.

    Ca permet de faire plein de trucs sympa, comme un tar à la volée de données distantes :

    ssh user@monserver "tar cf - /mondossier" > mondossier.tar

    Pratique si on n'a pas rsync, et qu'on veut conserver les attributs des fichiers par exemple :

    ssh user@monserver "cd /mon/chemin ; tar cf - mondossier" | tar xvf -

    Encore plus fort, d'un serveur à un autre en passant par la machine locale :

    ssh user@monserver "cd /mon/chemin ; tar cf - mondossier" | ssh user@monserver2 "cd /mon/chemin2; tar xvf - "

    Ca marche avec n'importe quoi, on peut exécuter une commande sur un hôte et nourrir une boucle sur un autre, la puissance du shell à travers le réseau, comme avec netcat mais chiffré et authentifié. Evidemment il faut faire attention à l'échappement des caractères, et au fait qu'une variable valide localement ne l'est pas sur le serveur (ou pire, pourrait avoir une valeur différente).

    On peut même faire du "rebond" à peu de frais :

    ssh -A -t user@srv1 ssh -A user@srv2

    (le -A sert pour la propagation de l'agent, attention à ne faire que sur des hôtes de confiance... Et le -t pour forcer l'allocation d'un pseudo-terminal même si on lance une commande non-interactive, sans ça impossible de lancer une session interactive dans le rebond).


    Un dernier truc bon à savoir : les variables d'environnement SSH_CLIENT et SSH_CONNECTION contiennent respectivement l'ip source, le port source et le port destination, et l'ip source, le port source, l'adresse de destination et le port de destination. Ca peut servir.

    Allez encore quelques-un, rapide, pour la route :

    - Les shells qui ont une completion évoluée peuvent souvent faire de la completion de nom de fichier à travers scp si on a une clef pour se connecter au serveur et un agent,
    - lftp supporte sftp, il suffit d'utiliser sftp://
    - si on a un domaine kerberos (ou quelque chose qui y ressemble, comme un active directory), et que c'est le moyen d'authentification, on peut faire du single sign-on en autorisant l'authentification GSSAPI (côté serveur et côté client)
    - les clefs sont hashée par défaut (sous debian en tout cas) dans le .ssh/known_host, pour éviter de se faire voler la liste des hôtes auquel on se connecte. Pour faire de la completion sur les noms d'hôte (si on n'a pas peur de se faire voler ce fichier), on peut utiliser le format en clair avec "HashKnownHosts no" dans son .ssh/config.
    - pour supprimer un hôte de son known_hosts quand il est hashé, il suffit d'utiliser ssh-keygen -r <hôte>
    - si on utilise un agent (par exemple celui inclus par gnome...), il est préférable de s'assurer que les phrases de passe sont oubliées quand on verrouille la session.

    Si on utilise xscreensaver, on peut faire ça simplement avec un script perl à lancer à l'ouverture de session :


    #!/usr/bin/perl
    # unload identity when screen is locked

    # put your favourite graphical ssh-askpass here, unless you use SSH_ASKPASS
    # environment variable
    my $ssh_askpass = "/usr/lib/openssh/gnome-ssh-askpass";

    $ENV{SSH_ASKPASS} = "$ssh_askpass" unless ($ENV{SSH_ASKPASS});

    my $locked;
    open (IN, "xscreensaver-command -watch |");
    while () {
    if (m/^LOCK/) {
    system("ssh-add -d") if (! $locked);
    $locked = 1;
    } elsif (m/^UNBLANK/) {
    system("ssh-add < /dev/null") if ($locked);
    $locked = 0;
    }
    }


    Si on utilise gnome, remplacer xscreensaver-command par gnome-screensaver-command.

    Amuse-toi bien :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.