Se connecter en ssh à travers un mandataire http (proxy)Il peut arriver (en entreprise, dans un cybercafé…) qu'il y ait un mandataire (« proxy ») HTTP. Pour initier une connexion vers un poste de l'extérieur, il est alors nécessaire d'utiliser l'outil
Vous pouvez maintenant vous connecter à travers votre mandataire en toute transparence, avec la commande ssh. Restriction d'accès SSHQuand on utilise SSH avec une authentification par clés , le serveur distant peut limiter l'utilisation de certaines commandes permises. command="/usr/bin/cvs server" ssh-dss <nom_commande> Ceci permettrait que seule cette commande puisse être utilisée à l'exception d'autres. Accès automatique pour des scriptsL'authentification par clé publique (voir SSH) peut également être employée pour automatiser les tâches qui exigeraient habituellement l'introduction au clavier d'un mot de passe. Ceci fera que votre clé privée ne sera pas protégée. Ajoutez la clé publique de l'autre ordinateur dans le fichier ~/.ssh/authorized_keys par la commande ssh-copy-id comme expliqué sur la page relative aux bases sur SSH (SSH) Maintenant vous pouvez utiliser SSH sur cette machine sans une passphrase à taper. Ajoutez une référence àSSH dans votre crontab et vous êtes prêt. Avoir une clef privée non protégée peut être une faille de sécurité. Les intrus devront seulement obtenir l'accès à la clé privée et pourront accéder aux ordinateurs distants. Utiliser le ssh-agentSi vous devez fréquemment ouvrir des sessions distantes avec SSH ou copier des fichiers avec SCP (ou toute autre utilisation de SSH) il existe une solution pour ne pas avoir à saisir votre passphrase à chaque utilisation. en utilisant SSH agent. Vous devez indiquer une fois votrepassphrase à ssh-agent en employant la commande ssh-add et tout ce que vous commencez comme sous-processus de SSH agent (doncSSH, SCP, etc.) se rappellera automatiquement de la passphrase. ~$ ssh-add Enter passphrase for /home/<nom_utilisateur>/.ssh/id_rsa: Identity added: /home/<nom_utilisateur>/.ssh/id_rsa (/home/<nom_utilisateur>/.ssh/id_rsa) Une fois effectué cette opération un seule fois, vous n'aurez pas besoin de vous inquiéter de l'agent. Votre session est prête pour exploiter le ssh-agent automatiquement. L'agent ssh ne transmet pas votre passphrase sur le réseau ni votre clé privée. Vous pouvez savoir quel utilisateur est déclaré avec ssh-agent à l'aide de la commande suivante : ssh-add -l qui renvoi l'empreinte de la clé connue, le nom de l'utilisateur et le type de clé de chiffrement utilisée. Exemple : 2048 1f:98:46:a2:b9:25:0e:68:35:20:fa:9e:b0:cb:5e:3e albert@monordi (RSA)
À la prochaine ouverture de session, vous devrez taper votre passphrase. Utiliser SSH pour faire du SFTP (Transfert de fichier sécurisé)Vous pouvez :
Tunnéliser sa connexion internet par SSH avec l'aide de SquidTunnéliser sa connexion Web est très utile dans quelques situations :
On va donc installer le serveur de médiation Squid (serveur mandataire) sur une machine Ubuntu (qui sera le serveur) à laquelle on accèdera par une machine distante possédant un client SSH et un navigateur Web. Dans l'exemple présent, ce sera un client sous Windows. On obtiendra alors un accès sécurisé à un mandataire distant (le serveur sous Ubuntu) qui se connectera aux sites Web et renverra le résultat à votre navigateur. Ayez bien à l'esprit qu'en effectuant cette opération vous violez certainement les règles de sécurité définies au sein de votre organisation. Partie serveurPremièrement, il faut mettre en place le programme Squid en installant son paquet squid. Normalement si tout se déroule bien, Squid devrait être fonctionnel. visible_hostname none Après l'enregistrement du fichier de configuration, vous pouvez normalement générer les répertoires qui contiendront le cache de Squid par la commande : sudo squid -z Grâce à SSH, les connexions reçues par Squid seront des connexions provenant du serveur lui-même. Mais, par défaut, Squid n'accepte que les connexions sur la boucle locale 127.0.0.1 en Ipv4 (loopback). On devrait alors quand même ajouter une autorisation pour l'adresse IP du serveur qui n'est pas celle de bouclage. Vous ouvrez donc le fichier de configuration Squid configuration et vous ajoutez ces deux lignes : acl ordi src 192.168.1.1 http_access allow ordi Dans l'exemple, sudo squid start ou le redémarrer par : sudo squid reload Squid est normalement prêt à recevoir les connexions venant de la machine hôte. Partie client
Tunnéliser sa connexion internet par SSH (sans Squid)La partie précédente consiste à installer un mandataire HTTP sur le serveur et de s'y connecter via SSH. Cependant, SSH lui-même peut jouer le rôle de mandataire, ce qui évite l'installation d'un logiciel supplémentaire. Partie serveurIl n'y a en principe rien à faire. Cette fonctionnalité est activée par défaut sous Ubuntu. Partie clientCette fois, le mandataire à prendre en compte notamment lors de la configuration du navigateur est de type SOCKS. Sous Linux (dont Ubuntu)Utiliser la commande # Ouverture d'un tunnel ssh (sur le port 1234 local) vers un serveur qui autorise la connexion # le port (1234 dans cet exemple) est choisi arbitrairement, tant qu'il n'est pas utilisé pour autre chose ssh -D 1234 monuser@monserver.net Configurer ensuite le navigateur, gestionnaire de courrier, etc., pour utiliser un mandataire de type SOCKS 5, adresse : localhost, port: 1234(selon ce que vous avez utilisé ci dessus). La connexion fonctionnera tant que le tunnel restera ouvert : si vous fermez le terminal ayant servi à ouvrir le tunnel, vous fermerez le tunnel. Sous Windows, avec PuttyLa configuration est la même qu'au point 6.2, sauf qu'il faut cocher la case "dynamic". La case "destination" n'est pas prise en compte et peut rester vide. Vous pouvez ouvrir plusieurs tunnels utilisant des ports différents ou des utilisateurs différents. Ainsi, la navigation peut utiliser un tunnel vers un serveur, la messagerie un tunnel vers un autre serveur, etc. Il est possible aussi d'utiliser un navigateur passant par le tunnel et un autre navigateur sortant directement. Gestion des tunnelsIl existe une petite application graphique bien pratique pour gérer les tunnels SSH : au lieu de les recréer chaque fois on utilise Graphical SSH Tunnel Manager. Accéder à ses ressources réseau locales depuis l'extérieur sans NAT : tunnelIl est intéressant de pouvoir accéder à des ressources réseau locales (RDP, VNC, Administration périphérique réseau comme les box, etc.) sans pour autant rendre ces périphériques directement accessibles depuis Internet. SSH permet l'accès à ces ressources comme si l'on était en local (une sorte de réseau privé virtuel). Prenons un exemple. Accéder à une machine Windows via RDPDonc nous avons un réseau avec une machine sous Windows (XP, Vista…) avec comme adresse locale Nous voulons depuis l'extérieur accéder à la machine Windows via RDP. Nous allons pour cela utiliser la tunnélisation. À partir de votre station depuis l'extérieur on va tunnéliser la connexion RDP de la station Windows au travers du serveur ssh : ssh -L 3389:192.168.1.2:3389 username@IP_Publique_Box Il suffit ensuite d'ouvrir le terminal serveur client sur votre machine et de se connecter à Nous pouvons de la même façon accéder à la configuration de notre Box sans pour autant devoir la rendre accessible depuis Internet (attention seul sudo ssh -L 80:192.168.1.1:80 username@IP_Publique_Box Puis en ouvrant son navigateur préféré et en entrant comme adresse http://localhost Accéder à un serveur par rebond ssh (serveur ssh intermédiaire)Pour accéder à un serveur par rebond sur un serveur ssh intermédiaire, on réalise normalement 2 connexions ssh ce qui peut devenir fastidieux lorsqu'on doit réaliser cette opération régulièrement.
Pour toutes les commandes décrites ci-dessous, il est possible d'ajouter un nom d'utilisateur pour changer d'utilisateur. ssh user@adresse Connexion ssh vers le serveur de destination via un serveur ssh intermédiaireIl s'agit d' exécuter sur le poste client la commande ssh vers le serveur final ssh <srv_intermédiaire> ssh <srv_final> Si vous obtenez l'erreur suivante : Pseudo-terminal will not be allocated because stdin is not a terminal. rajouter l'option ssh -t <srv_intermédiaire> ssh <srv_final> Connexion ssh directement vers le serveur de destinationLe fonctionnement n'est pas du tout le même que précédemment car ssh parlera ici directement avec le serveur final.
L'utilisation de la commande Avec le "mode netcat intégré" introduit avec la version 5.4, l'option "nc" n'est plus nécessaire. Il s'agira donc de modifier sur votre client
Accéder à un serveur ssh dont les ports entrants sont bloquésIl peut arriver que les ports des connexions entrantes sur un serveur SSH soient bloqués 1). Cependant, il est rare que les ports sortants soient fermés. Dans ce cas, il est possible de faire appel à du « Reverse-SSH » tel qu'expliqué dans cette page Problèmes et solutionsDélai lors de la connexionSi vous avez un délai de plusieurs secondes avant que la connexion SSH ne se fasse, essayez d'ajouter ceci à votre fichier ~/.ssh/config GSSAPIAuthentication no Ceci désactive l'identification par GSSAPI qui engendre parfois des délais lorsqu'elle n'est pas utilisée. Liens
|
Tutoriels >