Raspberry Pi Partie 3 : connexion SSH directe (sans box/routeur) depuis un PC Linux

Prérequis :
– Un PC Linux (ou autre UNIX, les commandes peuvent varier) avec un lecteur de SDCard interne ou externe
– Un Raspberry Pi (Rpi) type B ou type A avec convertisseur USB vers RJ45, avec l’alimentation qui va bien
– Un cable RJ45 cat 5 (droit ou crossover)
– SDCard avec une distro pour Rpi avec serveur/deamon SSH qui se lance au démarrage

laptop_rpi_dir_connection
Laptop/Raspi direct connection

Convention d’écriture de commandes :
[OPTIONS] données optionnelles ou nécessaires que dans certains cas/sous certaines distros
Les données contenus <> sont des informations variables, elles changent d’un cas à l’autre, il suffit de suivre les instructions pour savoir comment connaitre ces données

Ces commandes doivent êtres entrées dans le Terminal sans les caractères <>, ni []

Mettez la SDCard du Raspi dans le lecteur du PC

Ajoutez les paramètres suivants au fichier /etc/network/interfaces du Raspi avec les droits root

iface eth0 inet static
address 192.168.1.21
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.22

Pour ce faire, utilisez utilisez les commandes suivantes

dave@GlaNIX ~ $ su
Password:
GlaNIX dave # cd /media/dave/<nom_fspartition_sdcard>/etc/network
GlaNIX dave # cp interfaces interfaces.old
GlaNIX dave # vim interfaces

— La commande su permet de passer en root, à n’utiliser que si c’est nécessaire
On peut aussi faire précéder une commande par sudo pour l’exécuter en root mais dans certains cas (comme l’activation/désactivation de l’ip_forwarding, on doit obligatoirement passer par su
Quand vous entrez le mots de passe, il ne sera pas visible, même pas sous forme d’une suite d’astérisque (⁕) ou de ● , ce qui normal, il ne s’agit pas d’un dysfonctionnement
— Les cartes images du Raspberry Pi sont divisées en deux partitions, /boot et une autre partition, le FileSystem (FS), qui contient entre autres les fichiers de configuration, donc les fichiers qui nous intéressent
Le nom de cette partition est une suite de lettres et de chiffres qui varient d’une carte à l’autre
Pour connaitre ce nom, il suffit de tapper deux fois sur la touche tab une fois que vous avez écrit dans le terminal cd /media/[username] ou cd /media (sur certaines distros, il y’a pas de dossier username dans /media)
Vous aurez un listing de tout le contenu du dossier /media/[username] ou /media, entrez les premiers caractères (ou le premier si votre partition commence par un caractère unique) à la suite de la commande cd /media/[username] et appuyez une fois sur la touche tab pour utiliser l’auto-complétion du nom de la partition pour ensuite allez vers /etc/network
La commande cp interfaces interfaces.old permet de sauvegarder une copie du fichier interfaces sous le nom de interfaces.old
VIM (Vi IMproved) est un éditeur de texte libre en ligne de commandes qui vous permet de modifier des fichiers texte (des fichiers de configurations surtout), en appuyant sur i, on passe en mode “insertion” pour pouvoir rajouter du contenu au fichier ouvert, on peut se déplacer dans le fichier avec les flèches directionnelles
Une fois le fichier modifié, on le sauvegarde avec
– La touche échap ou esc suivie de : pour passer en mode commandes
wq pour enregistrer les modifications avec w (write) et quitter avec q (quit)
donc w seul permet d’enregistrer sans quitter, pour quitter sans enregistrer, on utilise q!
! permet de bypasser l’avertissement, vim empêche de quitter sans sauvegarder sauf si on lui fait comprendre que c’est volontaire, ce qui évite de perdre toutes les nouvelles modifications si on oublie le w par erreur de frappe

Le contenu du fichier interfaces sur le Raspi doit ressembler à quelques chose comme :

pi@raspberrypi ~ $ cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface eth0 inet static
address 192.168.1.21
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.22

Il peut éventuellement contenir plus d’informations, sur l’interface wlan0 par exemple, pas la peine d’y toucher, c’est n’est pas l’objet de cet article, ce qui nous intéresse ici c’est l’interface eth0

Il faut maintenant quitter la carte SD pour pouvoir pouvoir l’éjecter

GlaNIX dave # cd

Ejecter convenablement la carte et la remettre dans le Raspi avec de brancher l’alimentation

Configuration du PC Linux

Première chose à savoir, dans le cas de figure actuel, DHCP n’est PAS votre ami !
Si votre connection cablée est configurée en DHCP avec NetworkManager vous allez perdre la connexion avec le Raspi, même si vous n’avez pas de serveur DHCP, qui attribue réellement une nouvelle IP à votre machine
La machine doit probablement attendre le renouvèlement du bail de la part d’un serveur DHCP qui n’existe pas et abandonner l’IP quand elle se rend compte qu’elle n’a reçu aucun le renouvèlement de bail, mais la durée du bail (et donc la période à partir de la quelle la demande de renouvèlement doit être envoyée par le client au serveur) étant configurable sur le serveur, j’ai du mal à voir à partir de quel moment notre interface eth0 du laptop se retrouve sans l’IP qu’on lui aura attribué manuellement, avec ifconfig
J’ai opté pour un changement temporaire avec ifconfig car j’ai pas envie de faire un changement permanent dans /etc/network/interfaces du PC portable, bien que ce soit possible, à condition de choisir une IP en dehors de la plage DHCP de son serveur HDCP du routeur maison
La raison est tout simplement que je me déplace pas mal avec le laptop, et je connais pas toutes les plages DHCP de tous les réseaux sur les quelles je serai amené à me connecté
Note : Il est fortement conseillé de spoofer vos adresses MAC quand vous vous connecter sur les points d’accès semi-publics (réseau câblé d’entreprise, école, amis… ) ou publics (Hotspot WiFi) et de choisir des noms des hostnames génériques (éventuellement à changer régulièrement) de type “hostname” histoire de reduire un peu les changes de vous faire tracer par les marketteux et d’éviter de réveler trop d’informations sur vous à base de hostnames de type “PC-windows-8-de-nom-prenom” et autres “iPhone-de-nom-prenom”

Revenons au sujet initial, pour résoudre ce problème de déconnexion, vous pouvez soit stopper le service NetworkManager quand vous utilisez le Rpi en connection directe, à chaque fois… soit opter une solution un peu plus propre

– Modifier dans NetworkManager la connection actuelle, avec click droit sur l’icone “réseaux” > Edit Connections > Sélectionner la connection filaire concernée > Edit
Pour décocher la case Connect automatically, si vous avez plusieurs connections cablées, décochez cette case pour toutes les connections filaires
– Créez une nouvelle connection filaire avec le bouton Add, et décochez la case Connect automatically, donnez à cette nouvelle connection un nom unique et cliquer sur l’onglet IPv4 Settings, dans Method choisissez Shared to Other Computers

Brancher le cable RJ45 entre le Raspi et le PC et cliquez sur l’icone “réseaux” pour sélectionner le réseau que vous venez de créer, une fois connecté au bon réseau, passez à la suite

dave@GlaNIX ~ $ hostname -I

Cette commande vous donnera une liste d’IP, ou rien du tout en fonction de ce qui est configuré/connecté sur votre machine

Les deux machines ne peuvent communiquer que si elles sont connectés au même sous réseau donc on va donner à l’interface eth0 une IP 192.168.1.22
L’adresse IP du Raspberry Pi étant fixée sur 192.168.1.21, avec netmask en 255.255.255.0, il faut donc avoir les 3 premiers octects identiques dans les 2 adresses IP pour ce netmask (255.255.255.0)

Dit autrement vous pouvez choisir un autre chiffre que le 22 pour votre PC, mais vous devez obligatoirement choisir une adresse en 192.168.1.x pour la configuration que j’ai proposé

L’interface eth0 est la première carte réseau avec un port RJ45, sur un PC classique, il y’a qu’une seule interface eth généralement, on risque pas de se tromper en y allant les yeux fermés, mais je conseille quand même d’éviter de faire ce branchement les yeux fermés littéralement quand même à ceux qui ne veulent pas bousiller leurs port/connecteur RJ45 🙂

dave@GlaNIX ~ $ sudo ifconfig eth0 192.168.1.22

dave@GlaNIX ~ $ hostname -I
192.168.1.22

Maintenant que l’IP du PC est paramétrée dans le même réseau que celle du Raspi, il faut le pinger pour tester la connexion, si y’a pas d’erreurs et il devrait pas y avoir si vous avez bien suivi 🙂
Il reste plus qu’à se connecter en SSH

Rpi_direct_connect
Rpi direct connect

PS : La même méthode fonctionne sous tout autre équipement UNIX avec un serveur SSH

6 Replies to “Raspberry Pi Partie 3 : connexion SSH directe (sans box/routeur) depuis un PC Linux”

  1. Bonjour et merci pour le tuto.
    Je cherche à faire la même chose en wifi. Savez vous si c’est possible?

    1. Bon jour

      De rien 🙂

      En WiFi j’ai pas essayé mais à ma connaissance, il n y a pas de raison pour que ça ne fonctionne pas
      Le principe est le même, fixer les adresses IP manuellement puis tester la connexion, mais il faut utiliser la clé WiFi du Raspberry Pi comme point d’accès WiFi et une fois que c’est fait, reprendre mon tuto en changeant les noms d’interfaces

      La carte WiFi interne (donc coté PC) s’appelle normalement wlan0 sous Linux et la clé USB-WiFi (coté Raspi) wlan0 aussi, en cas de doute ifconfig te donne les interfaces actives et ifconfig -a te liste toutes les interfaces detectées (ou créés). L’interface qui apparait entre deux ifconfig uniquement quand la carte WiFi est active te permet de confirmer si c’est bien wlan0

      Par contre, si t’as pas encore de clé WiFi, attention au choix, le modèle de clé doit bien être reconnu et et la clé correctement alimentée par le Raspi, certains modèles de clés sont à eviter, et dans certains cas (relativement rares en fonction de ce qu’on branche sur le Raspi), il peut être nécessaire de passer par un hub USB alimenté par prise secteur pour permettre un fonctionnement correct/optimal

  2. bonjour
    titre inadapté : connexion SSH directe (sans box/routeur) depuis un PC Linux
    OR, pour arriver à ce stade il faut déjà avoir monté son rapsberry et s’en servir.
    Ah que la langue française si riche et si précise Comment peut-elle faire défaut à un linuxien.
    Pour un windosien on peut comprendre, mais un linuxien… lol
    il vous est dit d’avoir un rapsb, un cable ethernet …
    alors que le titre indique : comment démarrer
    tuto tout à fait inutile pour les noobs
    en effet ce tuto est déjà fait pour des personnes ayant le minimum requis
    pour les noobs ou les linuxiens en herbe, passez d’abord par des tutos faits à partir de windows… on s’en mieux avec beaucoup de détours propres à Windows
    mais au moins on arrive au but.

    L’ami, je te recommande 2 choses
    prendre un dictionnnaire complémenté d’un livre de grammaire
    le Bescherelle me semble idéal pour toi – en 3 volumes.
    et
    après l’avoir compris, changer ton titre inadapté.
    Bye

    1. « titre inadapté : connexion SSH directe (sans box/routeur) depuis un PC Linux »

      Passons sur ton manque total d’arguments et ton attaque gratuite… Titre parfaitement adapté vu le but du tuto. Le titre dit très exactement ce que le tuto permet de faire ! Le but de ce tuto, est de connecter une machine GNU/Linux à un Raspberry Pi, sans passer par un routeur, en connexion peer to peer (donc directe, sans intermédiaire), le cas d’utilisation typique d’un laptop en déplacement, on peut vouloir utiliser le Raspberry Pi qu’on a sur soit mais on a donc pas accès à un réseau cablé… d’ailleurs j’ai écrit cet article après m’être retrouvé dans cette situation, c’est donc ton commentaire qui est inutile.

      « pour arriver à ce stade il faut déjà avoir monté son rapsberry et s’en servir »
      Bravo, Captain Obvious ! Ou est-ce que t’as lu que je disais le contraire? le titre le suggère même très clairement (Partie 3). Par contre savoir installer/utiliser un RPi via SSH n’implique pas obligatoirement de savoir faire ou de penser à faire la configuration décrite dans ce tuto… Par ailleurs, si tu avais pris le temps de bien regardé, j’ai déjà écrit un autre tuto avant celui-ci, installer le RPi avec une brève introduction à SSH.

      « tuto tout à fait inutile pour les noobs »
      J’ai jamais dit que c’était un tuto pour les gens qui ne savent rien (et ne veulent pas apprendre), ça c’est uniquement dans ta tête… d’autant plus que le titre que tu critique, contient “Partie 3” ce qui suppose qu’il y a eu deux parties (2 articles) avant celui-ci, que tu n’a de toute évidence pas lu.

      « en effet ce tuto est déjà fait pour des personnes ayant le minimum requis »
      Tu te répète, donc même réponse que précédemment… en aucun cas ce tuto ne s’adresse à des gens avec 0 connaissance, c’est écrit ou sous-entendu nul part… ça s’adresse aux gens qui remplissent les pré-requis et qui ont le besoin de ce type d’usage.

      « pour les noobs ou les linuxiens en herbe, passez d’abord par des tutos faits à partir de windows… »
      1. J’hallucine… je fais ce que je veux, tu ne me paye pas pour que j’écrive les articles que TU veux aux dernières nouvelles !
      2. C’est un blog sur le Logiciel Libre en général et GNU/Linux en particulier, et non pas un blog pour parler de windows juste dans le but de plaire à la masse ! Je n’ai pas à faire des tutos pour windows sous l’injonction de qui que ce soit… Il y a bien assez de sites et de magazines qui sous couvert d’informer font de la pub pour windows à longueur de journée
      3. Je n’ai pas windows de toute façon, sur aucune de mes machines… donc au lieu de m’insulter bêtement parce que j’ai n’ai pas écrit le bouquin « Raspberry Pi pour windowsiens » dont tu rêve, en un seul article, tu n’as qu’à te sortir les doigts du cul pour faire le même tuto/adapter celui-ci pour windows, tous mes articles sont sous licence libre hein… fork it if you don’t like it!
      4. « Un linuxien en herbes » à par définition au moins une machine sous un système basé sur Linux, sinon en aucun cas c’est un Linuxien, et aussi « Un linuxien en herbes » doit savoir lire, aura donc compris qu’il faut lire les 2 articles précédents de cette série (pré-requis pour cet article), ainsi que l’introduction de l’article (qui mentionne clairement qu’il faut un RPi fonctionnel avec un serveur OpenSSH lancé au démarrage!).

      Une fois que tu aura compris tout ça, tu comprendra qu’on peut aisément suivre ce tuto, à condition de savoir lire, et de s’intéresser un minimum au sujet… De plus il y a les commentaires pour poser des questions en cas de besoin.

      Pour le reste, entre tes attaques personnelles débiles, et ta critique hors sujet, je te recommande 2 choses
      — Mettre autant d’effort à ponctuer et à formater correctement ton texte, que tu en mets à m’insulter d’illettré… entre tes sauts de lignes sauvages, ta ponctuation foireuse, et les minuscules en début de phrases, t’es pas vraiment crédible à jouer aux grammar nazis !
      – Aller troller ailleurs

  3. Bonjour,

    1) Il n’y a pas de doute azimor est vraiment une personne stupide …

    2) Sinon c’est un excellent tutoriel qui regroupe toutes les informations nécessaires . Parfait !!!

    Pierre.

Comments are closed.