Serveur d'impression

Linux Fu: Astuces SSH stupides – Bien choisir son serveur d impression

Le 21 janvier 2020 - 9 minutes de lecture

Si vous vous connectez à des ordinateurs distants via Internet, il est fort probable que vous utilisiez une forme de SSH ou un shell sécurisé. Sous Linux ou Unix, vous utiliserez le ssh commander. Il en va de même pour les environnements de type Linux sur Windows comme Cygwin ou WSL. Pour Windows natif, vous utilisez peut-être Putty. Dans sa forme la plus simple, ssh est juste un programme terminal qui parle à un serveur à l'aide d'une connexion cryptée. Nous pensons qu'il est très difficile d'écouter quiconque communique avec un ordinateur distant via ssh.

Il existe plusieurs astuces pour utiliser ssh – certains sont assez simples et certains sont des choses que vous ne pourriez pas penser comme étant dans le domaine d'un programme terminal. Vous savez probablement que ssh peut copier des fichiers en toute sécurité et il existe des moyens simples et difficiles de configurer la connexion sans mot de passe.

Cependant, vous pouvez également monter un système de fichiers distant via ssh (en fait, il existe plusieurs façons de le faire). Vous pouvez utiliser ssh pour naviguer en toute sécurité sur le Web dans votre navigateur préféré, ou même l'utiliser pour tunneler un trafic spécifique par port ou même l'utiliser comme un VPN de fortune. En fait, il y a tellement de chemin à parcourir que ce ne sera pas le dernier Linux Fu à parler ssh. Mais assez de configuration, passons aux astuces.

Quelques bonnes options

Nous supposerons que vous connaissez les bases: scp et sftp pour les copies de fichiers et ssh-copy-id pour configurer une connexion sans mot de passe. (Sinon, vous disposez de dix minutes pour effectuer une recherche rapide sur le Web.) Mais l'une des choses ssh est grand pour manipuler le réseau. Gardez à l'esprit, cependant, que le serveur doit avoir certaines options définies pour faire certaines des choses les plus intéressantes, donc si vous ne contrôlez pas le ssh serveur, certaines de ces astuces peuvent ne pas fonctionner pour vous.

Il y a beaucoup d'options à retenir sur le ssh ligne de commande, mais heureusement, vous n'êtes pas obligé. Vous n'avez même pas besoin de vous souvenir de votre nom d'hôte ou de votre nom d'utilisateur. dans le Fichier ~ / .ssh / config vous pouvez créer un alias. Par exemple, supposons que vous souhaitiez vous connecter à votre serveur domestique:



Host homeserver
  HostName mih0me.dyndns.org
  Port 1234
  Utilisateur TheAl
  IdentityFile ~ / .ssh / home_id
  ForwardX11 oui
  Compression oui
  TCPKeepAlive oui

Vous pouvez avoir autant d'alias que vous le souhaitez. Continuez simplement à répéter la ligne Host, puis suivez-la avec des options. Vous pouvez également ajouter plusieurs alias à une même instruction Host. Les options suivantes s'appliqueront ensuite à l'un des alias. Maintenant, pour ne connecter que les problèmes ssh homeserver et vous avez toutes les bonnes options.

Bien sûr, si vous utilisez Putty, vos options seront principalement dans le profil d'hôte et sur le ssh panneau de l'écran des options. Vous n'aurez peut-être pas autant d'options, mais vous pouvez en essayer.

Être persistant

Un très bel ensemble d'options à inclure pour définir le fichier de contrôle principal. Par exemple:



ControlMaster auto
ControlPath ~/.ssh/master-%[email protected]%h:% p

Cela permet à plusieurs sessions sur le même hôte de partager un seul socket TCP. Parce qu'il faut un certain temps pour configurer un socket sécurisé, cela peut accélérer les choses si vous continuez plusieurs sessions entre deux hôtes. Vous pouvez le définir pour tous les hôtes en utilisant le Hôte * ligne dans le fichier de configuration. Vous pouvez l'utiliser pour toutes les options globales que vous pourriez avoir.

D'un autre côté, si vous envoyez beaucoup de données sur plusieurs connexions, activez ControlMaster pourrait ne pas être une bonne idée. Vous pouvez ajouter -S aucun pour remplacer le paramètre global.

Une autre chose à noter est que votre premier ssh la session peut sembler se bloquer si vous essayez de la fermer avant que toutes les autres connexions ne soient fermées. Certaines personnes dirigent délibérément un ssh session lors de la connexion à un hôte auquel ils se connectent souvent, ce qui évite ce problème. Cependant, une meilleure façon est de définir ControlPersist à oui. Cela entraînera indéfiniment la session d'origine à l'arrière-plan. Si vous voulez un petit délai de grâce, vous pouvez définir ControlPersist à un nombre comme 180. Cela entraînerait la fin de la session d'arrière-plan s'il n'y a pas de connexion pendant trois minutes.

Un autre inconvénient de cette approche est que vous avez tendance à obtenir des fichiers maîtres orphelins. Dans rc.local J'ai la ligne suivante:







/ bin / rm /home/*/.ssh/master-* || true> / dev / null

Avec Putty, vous pouvez cliquer sur le bouton "Partager les connexions SSH si possible" dans le panneau d'options SSH.

Configuration

Il existe plusieurs options de configuration que vous pouvez utiliser dans le fichier de configuration. Par exemple, Temps différé vous permet de dire ssh la connexion est établie pour une utilisation sans surveillance. Ne vous embêtez donc pas à inviter l'utilisateur à saisir des mots de passe ou autre chose. Cela ne veut pas dire que cela vous laissera entrer, bien sûr. Cela signifie simplement qu'il échouera si vous n'avez pas configuré les éléments pour vous connecter sans mot de passe.

Il y a d'autres éléments intéressants. Par exemple, vous pouvez exécuter une commande locale ou distante lors de la connexion. Vous pouvez également envoyer une variable d'environnement à l'hôte distant ou même simplement en définir une. Par exemple, supposons que vous souhaitiez toujours conserver vos LS_COLORS sur votre poste de travail et sur le serveur, mais que vous les modifiez fréquemment et que vous ne souhaitez pas utiliser les mêmes profils. Vous pouvez l'ajouter à l'entrée du fichier de configuration de l'hôte:







SendEnv LS_COLORS

Le serveur doit être configuré pour accepter cela, bien sûr. Putty peut gérer la définition d'une variable d'environnement à partir de l'onglet Données dans sa configuration.

Côté réseau, vous pouvez spécifier TCPKeepAlive à oui si vous souhaitez que le serveur et le client testent leur connexion pendant les périodes d'inactivité. Il s'agit d'une épée à double tranchant. Si la connexion est inactive, vous ne serez pas déconnecté. Mais si le réseau tombe au bon moment pendant une brève période, vous risquez de vous déconnecter là où vous ne l'auriez pas si vous aviez conservé la valeur par défaut. Il existe même un moyen d'ouvrir un tunnel de couche 3 ou de couche 2 entre les machines – un sujet pour un futur Linux Fu.

Par votre commande

N'oubliez pas que ssh peut exécuter une commande et vous envoyer sa sortie. À titre d'exemple pratique, je reflasher occasionnellement le micrologiciel de mon imprimante 3D. L'imprimante est connectée à un Raspberry Pi, mais je fais la construction du firmware sur ma machine principale. Pendant longtemps, j'ai copié mon fichier sur le Pi (en utilisant scp), puis connecté au Pi pour exécuter un script que j'ai écrit appelé éclat. Le script désactive le logiciel du serveur Reptier, fait clignoter la puce Atmel sur la carte de commande de l'imprimante, puis rallume le serveur.

Voici le script qui s'exécute sur mon ordinateur principal. Noter la ssh commandes. On éteint le serveur. Un scp La commande copie le nouveau firmware. Ensuite un autre ssh fait le flash et réactive le serveur. Il existe bien sûr d'autres façons de procéder. Mais n'oubliez pas que ssh peut exécuter une commande à distance, puis revenir.







#! / bin / bash
si [ -z "$1" ]
ensuite
  echo Utilisation: fichier hexadécimal flash [remote_name]
  echo Si omis, remote_name aura la date attachée
  sortie 1
Fi
ONAME = "$ 2"
EXTRA = $ (date "+% Y% m% d.% H% M")
si [ -z "$2" ]
ensuite
  ONAME = "$ 1- $ EXTRA.hex"
Fi
IP = 192.168.1.110
  echo Stop Server
  ssh -l pi $ IP "sudo systemctl stop RepetierServer"
  echo Copy ...
  scp "$ 1" "pi @ $ IP: a8fw / $ ONAME"
  écho clignotant ...
ssh pi @ $ IP "cd a8fw; ./flash $ ONAME"
écho Redémarrer
ssh "pi @ $ IP" "sudo systemctl start RepetierServer"
écho Terminé
sortie 0

Si vous voulez un exemple plus convivial pour les pirates, envisagez d'utiliser la même idée pour exécuter Wireshark localement et analyser une capture de paquets à distance:







racine ssh @ someserver 'tcpdump -c 1000 -nn -w - pas le port 22' | Wirehark -k -i -

Vous pouvez faire le même tour avec tshark, si tu préfères.

Test de rapidité

Que savoir à quelle vitesse votre ssh la connexion est? Assurez-vous que vous avez pv installé et essayez ceci:



oui | pv | ssh remote_host "cat> / dev / null"

Plutôt cool!

Si vous avez de bonnes vitesses – ou même si vous n'en avez pas – vous pouvez essayer de monter un système de fichiers distant en utilisant sshfs. Il s'agit d'un système de fichiers FUSE – c'est-à-dire un système de fichiers qui vit comme un programme utilisateur normal, ne faisant pas partie du noyau. Avec rien du côté distant, mais le ssh serveur et des outils standard, vous pouvez faire en sorte que tout hôte auquel vous pouvez vous connecter ressemble à un système de fichiers local.

Mais attendez…

Vous pouvez faire beaucoup plus avec ssh, et je reviendrai plus loin. Mais pour l'instant, j'espère que vous en avez trouvé au moins un ssh astuce que vous pouvez utiliser qui était, sinon nouvelle, au moins un rappel pour vous.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.