Vous tapez dans votre terminal ssh late.sh et c'est tout. Votre clé SSH fait alors office de carte de membre et vous voilà dans un salon peuplé de gens qui tapent sur leur clavier depuis un peu partout sur la planète. C'est ce qu'a imaginé Mateusz Piórowski, un dev polonais, qui a passé ces derniers mois à ressusciter le BBS.
Vous atterrissez dans THE LATE BAR, un vrai décor en ASCII où vous marchez en utilisant les flèches du clavier ou les touches hjkl. Vous vous asseyez avec s, vous faites coucou avec w, et la touche i ouvre la ligne de saisie pour parler. Y'a un barman, un jukebox, un salon à côté, des habitués affalés aux tables et une porte mystérieuse marquée DOORS...
THE LATE BAR, vu depuis la démo web en lecture seule de late.sh
Le reste du club tient dans le même terminal avec une radio qui tourne en fond, un tableau ASCII collaboratif dont chaque case garde le nom de qui l'a peinte, des profils pour dire sur quoi vous bossez, un fil de news et une arcade avec 2048, sudoku, nonogrammes et solitaire. Il y a même un bonsaï qui pousse pendant que vous codez.
Mais je reviens un peu sur cette porte mystérieuse dont je vous parlais juste avant… Derrière se cachent ce qu'on appelle les door games. Pour les moins de 40 ans, dans les années 90, un "door" c'était le jeu externe qu'un BBS lançait pour vous, le temps de votre session. C'était le cœur social de ces machines, et si vous voulez goûter un peu à l'ambiance de l'époque, l'opération Sundevil vous en donnera un bon aperçu. Le bien inspiré Piórowski les a donc remis en ligne ! Et ce sont les vrais, hein, pas des remakes.
On y trouve par exemple NetHack, Dope Wars, Dungeon Crawl Stone Soup ou encore Usurper. Chaque jeu a sa crate Rust dédiée qui lance le vrai binaire Unix sur un PTY et vous le proxifie dans votre session SSH.
Vous pouvez également faire tout tourner chez vous en clonant le dépôt puis en faisant un make start, puis vous connecter en ssh localhost -p 2222. Un CLI compagnon gèrera alors la lecture audio en local avec un visualiseur synchronisé.
Côté vie privée, sachez que le serveur garde l'empreinte de votre clé, et pas la clé publique entière, et vos scores comme vos messages n'y sont rattachés que par cette empreinte. Il n'y a aucun log d'IP ni d'analytics mais si vous restez méfiant vous pouvez générer une clé jetable et vous connecter avec :
ssh-keygen -t ed25519 -f ~/.ssh/late_throwaway
ssh -o IdentitiesOnly=yes -i ~/.ssh/late_throwaway late.sh
Après c'est pas l'open, source, puisque le code est publié sous licence FSL-1.1-MIT. Vous pouvez donc lire, auditer, modifier, forker et contribuer, mais pas monter un service public concurrent. Quoi qu'il en soit, chaque version bascule ensuite sous licence MIT, 2 ans après sa sortie. Piórowski assume ça très bien et le documente dans son dépôt.
L'autre limite, c'est la taille car toute l'infra tourne sur un seul nœud Kubernetes plafonné à 1000 connexions simultanées, donc autant dire que le service va rapidement être victime de son succès
Mais moi j'ai trouvé ça super cool, c'est pour ça que je vous le partage. Je vous ai montré Soft Serve pour héberger son Git en SSH , The Lounge pour garder IRC en vie , Ascii Patrol pour jouer en caractères ... et voilà maintenant un salon complet qui revient !
Bref, ssh late.sh et vous verrez bien ce que ça donne !
![]()
Le gros câble que vous branchez sur votre voiture électrique, celui qu'il faut soulever à deux mains et qui pèse le poids d'un âne mort, dispose de 2 choses : Du courant, et un réseau. Lionel Richard Saposnik, chercheur chez SaiFlow, a eu la curiosité d'aller voir ce qui traîne sur ce réseau-là et vous allez voir, c'est pas triste...
Quand vous clipsez le pistolet dans la trappe, votre bagnole et la borne montent une liaison IPv6 entre elles, par courant porteur, sur deux broches du connecteur CCS2. Elles se causent en respectant la norme ISO 15118 pour négocier vos ampères, votre tension, le prix de votre kWh.
Le simulateur de véhicule se branche sur la prise et atteint la carte de la borne. Schéma SaiFlow.
Lors de ses tests, sur une borne rapide XCharge C6, il a trouvé un service SSH (Dropbear) qui écoute sur le port 22 et un Telnet (BusyBox) sur le port 23. Et sans surprise, le login c'est root et le mot de passe... bah c'est "root" aussi !! Mdrrrr ! Donc vous branchez votre voiture, vous vous connectez en SSH et vous êtes root !!
La raison c'est que les services d'administration de la borne écoutent sur 0.0.0.0, autrement dit sur toutes les interfaces réseau de la machine. Sauf que parmi ces interfaces, y'a can0 pour le bus CAN interne, eth0 pour le réseau de management... et surtout qca0 et qca1, les deux modems courant porteur des deux pistolets de charge. Écouter partout, ça veut donc dire aussi écouter du côté de votre voiture.
SSH et Telnet à l'écoute sur toutes les interfaces, celles du câble comprises. Capture SaiFlow.
Pour aller taper dessus, il lui a donc fallu seulement 130 $ de matos. De quoi tirer le Control Pilot à 9 V (5 à 10 $) pour faire croire à la borne qu'une voiture est connectée, un modem HomePlug Green PHY genre QCA7000 ou QCA7005 à 70 $, un Raspberry Pi à 50 $, et deux fils à mettre en contact avec le connecteur.
Et hop, avec tout ça, n'importe qui peut se retrouver sur le réseau interne de la borne. Et là, avec l'accès root, un attaquant peut faire tout un tas de choses comme voler le certificat SECC pour se faire passer pour la borne au moment où votre voiture s'authentifie en Plug & Charge, trafiquer le comptage de l'énergie, poser une backdoor dans un cron, rebondir vers le réseau de l'opérateur par le VPN de la borne, ou couper le refroidissement et la protection contre les surintensités.
Ça craint hein ?
Je vous avais raconté comment Charlie Miller a pris le contrôle d'une Jeep sur l'autoroute , ou encore comment une faille d'API permettait d'en déverrouiller à distance mais l'idée que la prise cause du réseau n'est pas neuve puisqu'en 2022 déjà, des chercheurs d'Oxford et d'Armasuisse avaient monté Brokenwire, une attaque qui coupait les charges à distance en brouillant ce même canal courant porteur, avec une radio logicielle LimeSDR et un ampli de 1 W. Ils ont tué des sessions jusqu'à 47 mètres, sur 8 voitures et 20 bornes rapides.
Ce qui change ici, c'est pas le canal, c'est ce qu'on trouve à écouter dessus car personne n'avait pensé à scanner la prise comme vous scanneriez un réseau d'entreprise.
L'avis publié par la CISA à ce sujet liste bien 3 failles sur la borne C6, mais une seule est notée 9,8 sur 10, et c'est celle du firmware qui s'installe sans vérification de signature. Les deux autres qui concernent la prise sont à 7,6, avec accès physique obligatoire. Je tiens à le préciser parce que j'ai vu passer des actus qui annoncent 3 failles à 9,8 partout et je n'y comprenais plus rien.
En tout cas, c'est corrigé. XCharge a poussé la mise à jour sur toutes les bornes concernées, et la CISA n'a constaté aucune exploitation dans la nature. Rassurez-vous donc, votre prochaine charge sur l'autoroute ne va pas transformer votre voiture en bagnole zombie explosive !
La France compte près de 200 000 points de recharge ouverts au public, et XCharge revendique une équipe sur place et plus de 2500 bornes rapides posées en Europe. C'est donc un modèle qui est touché mondialement et surtout, SaiFlow pense que le motif de cette faille se retrouve probablement chez d'autres fabricants, toutefois sans l'avoir démontré.
Bref, la prochaine fois qu'on vous dit qu'une borne c'est "juste" de la grosse électricité, vous saurez maintenant que c'est surtout un ordinateur avec une prise réseau dehors.
Merci à DjeDje pour l'info !
![]()
Une demi-seconde.
C'est le retard qu'ont pris les connexions SSH d'Andres Freund, ingénieur chez Microsoft, lors d'un benchmark de routine en mars 2024. Cette demi-seconde, Adrian Mastronardi, CTO de Habi et linuxien depuis 1996, vient d'en tirer un bouquin gratuit, Half a Second , qui raconte toute l'affaire XZ du début à la fin.
La plupart des gens auraient haussé les épaules mais lui, non. Il a tiré le fil, encore et encore, et a fini par déterrer une des backdoors les plus tordues jamais glissées dans un logiciel open source.
Half a Second, le livre gratuit d'Adrian Mastronardi sur le backdoor XZ
Pour ceux qui auraient loupé l'épisode, XZ Utils c'est un outil de compression qu'on retrouve sur à peu près tous les systèmes Linux, serveurs compris, donc autant dire une bonne partie d'Internet.
L'attaquant, lui, a joué le contributeur modèle pendant environ 2 ans. Gagner patiemment la confiance du mainteneur, puis glisser sa backdoor dans le code. Je vous en parlais à chaud à l'époque , le jour même de la découverte et quelqu'un avait même bricolé dans la foulée un agent SSH exploitant cette backdoor .
Mais la technique, dans ce livre, c'est presque secondaire. Le vrai sujet est dans le sous-titre : le travail invisible qu'il y a en dessous. Lasse Collin, le mainteneur de XZ, portait ce projet critique tout seul, bénévolement, et il était au bout du rouleau. Et c'est précisément cet épuisement que l'attaquant a retourné contre lui. Entre la pression des utilisateurs, les faux contributeurs qui râlent, la culpabilisation de ne pas pouvoir faire mieux tout de suite tout le temps.… Le mec a été intoxiqué / manipulé avant même que la moindre ligne de code.
Et des gars comme Lasse Collin, il y en a des milliers. Il y a des tas de gens qui maintiennent seuls gratuitement sur leur temps libre, des petites briques libres dont dépendent nos banques, nos hôpitaux, nos administrations et personne ne les paye, voire pire, personne ne les considère ni leur dit merci.
Et cela fait deux des proies faciles pour des attaquants bien organisés. Concernant le bouquin, rien à redire, la bibliographie s'appuie sur les rapports de l'OpenSSF, d'Akamai ou encore de Binarly. C'est une vraie enquête extrêmement bien sourcée qui ne tombe pas dans le charabaiat technique, ce qui fait que c'est parfaitement lisible pour tout le monde, même pour ceux dont la sécurité informatique n'est pas la spécialité.
Et le récit mélange les trois voix, celle du narrateur manipulé, celle de l'ingénieur curieux et celle de l'opérateur fantôme. Parce que oui je sais pas si vous savez, mais celui qui a fait cette backdoor n'a jamais été identifié et ne le sera peut-être jamais. Voilà, ça a l'air d'être un chouette bouquin distribué sous licence créative Commons non commercial. C'est donc gratuit et ça le restera pour toujours.Par contre, c'est en anglais, donc faudra faire un petit effort. Mais n'importe qui peut le traduire si ça l'amuse.
Bref, si l'affaire XZ vous avait marqués, c'est le récit qu'il vous fallait.
À lire ici en PDF ! Et merci à LWN d'avoir repéré le bouquin.
![]()
Monter son propre serveur Git, ça rime souvent avec déployer une usine à gaz bourrée d'options qu'on n'utilisera jamais. Heureusement, Soft Serve prend le contre-pied total de tout ça ! Ce serveur Git self-hosted de charmbracelet (la bande derrière Bubble Tea, Glow, Freeze et Gum) fait sa vie dans le terminal et se pilote via SSH.
Un coup de brew install charmbracelet/tap/soft-serve (ou Docker, ou go install), vous lancez soft serve et hop, vous voilà avec un serveur Git complet qui tourne grâce à un seul binaire. Pour parcourir vos dépôts, pas besoin de navigateur, vous vous connectez juste en SSH et une petite interface en mode texte s'ouvre direct dans votre terminal. Genre ssh git.chezvous.net, et vous voilà en train de naviguer dans l'arborescence, lire les fichiers avec coloration syntaxique, fouiller les commits. Le tout sans quitter le shell !
Créer un dépôt, ça se fait en une ligne :
ssh -p 23231 localhost repo create mon-projet
Ou alors vous pouvez pousser directement et soft-serve fabrique le dépôt à la volée :
git remote add origin ssh://localhost:23231/mon-projet
git push origin main
Le 23231 dans l'URL, c'est le port SSH par défaut de soft-serve, et vous pouvez le changer dans la config si jamais il vous gêne.
Côté accès, l'autorisation se gère avec les clés SSH publiques. Vous disposez de 4 niveaux de droits (no-access, read-only, read-write et admin-access), vous ajoutez les clés de vos potes ou collègues, et c'est réglé. Attention quand même, par défaut l'accès anonyme en lecture seule est activé, donc pour des dépôts un peu sensibles, basculez le réglage anon-access sur no-access avant de tout pousser. D'ailleurs le serveur cause aussi en HTTP et en Git protocol si vous préférez cloner autrement, avec des tokens d'accès pour le HTTP.
Soft-serve ne cherche surtout pas à remplacer une forge puisqu'on ne peut pas faire de pull requests, y'a pas de système d'issues, ni de CI intégrée. Si vous voulez tout cet attirail, Forgejo restera le bon choix...
Soft-serve ne fait UNE chose : héberger vos dépôts Git proprement, accessibles en SSH, sans chichi. Pour 5 repos perso ou le dépôt d'une petite équipe sans revue formelle, c'est pile poil ce qu'il faut si vous aimez le minimalisme.
Il gère également le Git LFS pour les gros fichiers, les webhooks pour brancher vos automatisations, les hooks Git côté serveur, et même une fonction mirror qui récupère un dépôt distant et le resynchronise tout seul toutes les 10 minutes. Très pratique donc pour garder une copie de vos dépôts GitHub en cas de pépin. Et pour le stockage, derrière c'est SQLite par défaut, ou PostgreSQL si vous voyez plus grand.
Notez que pour le moment, soft-serve n'accepte pas les nouvelles clés RSA en SHA-256, mais uniquement les vieilles RSA en SHA-1 ou des clés Ed25519. Donc si votre connexion SSH se fait jeter sans raison apparente, c'est sûrement ça. Le plus simple, c'est donc de générer une clé Ed25519 et de ne plus y penser...
Et tout ça tombe à pic cet outil je trouve parce qu'entre les Pays-Bas qui migrent vers Forgejo et Ghostty qui claque la porte de GitHub , rapatrier son code chez soi c'est un peu ce qu'on devrait tous faire en ce moment.
C'est codé en Go, sous licence MIT, et c'est dispo aussi bien sur Linux que macOS et Windows ici : soft-serve !
![]()
Si vous cherchez une alternative à Termius qui ne vous coûte pas une petite couille, je crois que j'ai trouvé ce qu'il vous faut !
C'est vrai qu'il y a quelque chose de carrément agréable à pouvoir ouvrir un navigateur depuis n'importe quelle machine et retrouver tous ses serveurs, fichiers et tunnels au même endroit... Et Termius fait ça très bien, sauf que la fonctionnalité la plus utile, à savoir la synchro entre appareils, c'est payant !
Et c'est ça la raison d'être de Termix qui propose exactement ça mais en open source, en gratos et à héberger vous-même !
Termix, c'est donc une plateforme de gestion de serveurs accessible depuis le navigateur. On y retrouve un terminal SSH complet, de la gestion de fichiers distants, des tunnels SSH inversés, et depuis la v2.0 sortie en mars dernier, le support RDP, VNC et Telnet.
En clair, ça couvre à peu près tout ce dont on a besoin pour piloter une infra depuis un seul endroit. Petit détail à noter quand même, le RDP/VNC/Telnet n'est pas inclus par défaut, donc il faut ajouter un second conteneur guacd au compose. Rien de compliqué, mais à savoir avant de se lancer.
Le terminal SSH supporte jusqu'à 4 panels simultanés comme ça plutôt que de multiplier les sessions, vous regroupez au même endroit. Le gestionnaire de fichier est aussi très sympa avec du drag & drop dans les deux sens, la modification de fichiers distants directement dans le navigateur... Et y'a aussi une gestion des conteneurs Docker intégrée, un Network Graph pour visualiser les connexions entre hôtes, et un système de snippets de commandes pour éviter de retaper les mêmes commandes à longueur de journée.
Ce qui change par rapport aux autres alternatives web, c'est surtout sa dispo sur toutes les plateformes. L'accès web est évidemment central, mais il existe aussi des apps natives pour Windows, Linux, macOS (App Store, DMG ou Homebrew selon vos préférences), iOS/iPadOS et Android.
Tout se synchronise ensuite via le conteneur self-hosted comme ce que permet Termius, à la différence près que vous hébergez vous-même le système.
Côté sécurité et gestion d'équipe, Termix intègre du RBAC, de l'OIDC, du 2FA, et stocke les données dans une SQLite chiffrée.
Pour tester en local, le docker-compose de base ressemble à ça :
services:
termix:
image: ghcr.io/lukegus/termix:latest
ports:
- "8080:8080"
volumes:
- termix-data:/app/data
volumes:
termix-data:
Attention à la config réseau avant tout puisque le port 8080 par défaut est souvent filtré ou déjà occupé donc changez ça dans le compose si besoin. Ajoutez ensuite le conteneur guacd si vous voulez le RDP/VNC/Telnet (je vous laisse aller lire la doc).
Après l'interface est fonctionnelle mais pas aussi léchée que Termius. Y'a pas de passkeys, et pas de support ed25519-sk pour les clés de sécurité hardware.
Pour une utilisation personnelle ou une petite équipe qui gère de l'infra linux, c'est largement suffisant, cela dit. Bref, si Termius c'est pas fait pour vous parce que c'est encore des sousous à sortir, sachez que Termix est là pour vous.
Merci Letsar pour le lien !
![]()
The best online business bank accounts combine strong APYs, low fees, and powerful digital tools. Learn how to choose the right fit for your business.
The post The 11 Best Online Business Bank Accounts Reviewed in 2026 appeared first on TechRepublic.
The best free business checking accounts with no monthly fees, plus tools to help you manage cash flow and grow your business.
The post 10 Best Free Business Checking Accounts appeared first on TechRepublic.
Vous avez confiance dans le nom qui est affiché à côté d'un commit GitHub ?
Bah vous pouvez arrêter tout de suite car le chercheur Shani Lavi a documenté il y a quelques années ce que les devs Git sérieux savent depuis longtemps : N'importe qui peut publier un commit avec n'importe quelle identité, et bien sûr, on peut systématiquement compter sur GitHub pour lier ce commit au profil correspondant sans broncher.
Allez, petite démonstration récente... Sur le repo no-as-a-service , il y a par exemple un commit signé "torvalds" qui ajoute un témoignage humoristique de Linus Torvalds dans le README. L'avatar de Linus s'affiche, et GitHub considère ça comme un commit parfaitement valide. Sauf que Linus n'a évidemment jamais touché ce projet humoristique qui est une petite API qui sort des excuses créatives pour dire "non".
Et ce qui est fou, c'est que vous pouvez faire pareil en dix secondes, et c'est ce qu'on va faire ensemble. Mais avant...
Git, à la base, c'est un système distribué. Quand vous faites un commit, votre client local prend alors deux infos dans votre config : user.name et user.email. Ces deux champs sont libres, et jamais validés côté client. Vous pouvez donc écrire ce que vous voulez dedans, et Git s'en fiche.
Côté GitHub, l'attribution se fait par l'email. Le service regarde alors l'email présent dans les métadonnées du commit, le compare aux emails enregistrés sur les comptes, et affiche le profil + l'avatar Gravatar correspondant. En fait, il n'y a aucune vérification que la personne qui a poussé le commit possède réellement cette adresse email.
Du coup, n'importe qui qui connaît votre email public (et il est public si vous avez déjà commit en clair sur un repo) peut publier des commits avec votre identité affichée.
Avant de paniquer, faisons l'exercice nous-mêmes pour bien comprendre. Dans un repo de test que vous contrôlez :
# 1. Visualiser un commit cible pour récupérer name + email
git log --format='%an <%ae>' | head -3
# 2. Reconfigurer Git avec une fausse identité
git config --global --replace-all user.name "Linus Torvalds"
git config --global --replace-all user.email "torvalds@linux-foundation.org"
# 3. Vérifier la config
git config --global --list | grep user
# 4. Faire un commit normal
echo "Hello from Linus" >> README.md
git add README.md
git commit -m "Important kernel fix"
# 5. Pousser sur votre repo
git push origin main
Allez voir le commit sur GitHub. Vous verrez l'avatar de Linus, son nom cliquable qui mène vers son profil, et surtout aucun avertissement. Pas de mot de passe demandé ni de token compromis... non, non, non, c'est juste une config locale modifiée.
Et si quelqu'un fait un fork de votre repo, ou si un mainteneur peu attentif valide un PR sur cette base, l'illusion est complète.
Pour ça, le badge Verified reste l'indicateur le plus utile. À côté du SHA d'un commit, GitHub affiche surtout une étiquette verte "Verified" si le commit est cryptographiquement signé avec une clé GPG ou SSH enregistrée sur le compte de l'auteur. Sinon, y'a rien du tout (par défaut). Attention quand même, l'absence de badge ne veut pas dire qu'un commit est malveillant mais juste qu'on ne peut pas garantir qui l'a écrit.
Par exemple, si vous regardez le commit e6b4218 sur no-as-a-service, vous remarquerez l'absence totale de badge. C'est le signal mais il faut encore savoir le chercher car par défaut, GitHub n'affiche AUCUN avertissement pour les commits non signés. C'est surtout ça le problème...
Alors pour vous protéger de ça, ça commence chez vous. Plus simple que GPG, la signature SSH utilise une clé que vous avez probablement déjà. Générez une clé Ed25519 si ce n'est pas fait :
ssh-keygen -t ed25519 -C "votre@email.com"
Configurez Git pour signer automatiquement avec cette clé :
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true
git config --global tag.gpgsign true
Dernière étape, ajoutez votre clé publique sur GitHub dans Settings → SSH and GPG keys (1), mais cette fois en sélectionnant le type Signing Key (pas Authentication Key, c'est différent) (2). Vos prochains commits afficheront le badge "Verified" en vert.
Si vous préférez GPG, le principe est identique avec gpg.format gpg et une clé GPG. Pour le détail GPG complet, j'avais déjà couvert le sujet dans
le tuto sur Thunderbird et GPG
.
Là, on passe à l'offensive. Vigilant Mode (3) force GitHub à afficher un statut sur tous vos commits. Les signés deviennent "Verified", les non signés deviennent "Unverified" en gros et bien visible. Plus de zone grise comme ça.
Direction même endroit dans Settings → SSH and GPG keys → Vigilant mode → Flag unsigned commits as unverified. Cochez la case. À partir de là, n'importe quel commit que GitHub vous attribue (via votre email vérifié) sans signature sera affiché comme "Unverified", ce qui rend le spoofing beaucoup plus difficile à dissimuler. Petite limite par contre, ça ne protège que votre propre identité et pas celle des contributeurs qui n'ont pas activé le mode.
GitHub considère ce comportement comme un non-bug. Sur leur page bug bounty, l'usurpation par email Git est explicitement listée comme ineligible. Leur argument c'est que ça ne donne pas accès aux repos ni de privilèges supplémentaires, donc ce n'est pas une faille au sens strict.
Sauf que dans la vraie vie, l'identité affichée influence les décisions. Par exemple, un mainteneur qui voit un PR signé d'un contributeur connu va l'examiner avec moins de paranoïa, un journaliste qui couvre un scandale va citer "le commit de tel développeur" sans vérifier la signature, et combiné à d'autres vecteurs, ça peut devenir redoutable ! Je pense surtout aux attaques supply chain récentes type Shai-Hulud où une fois le code piégé, l'attribution Git aide à le faire passer pour légitime.
Bref, dire "ce n'est pas un bug" parce qu'il faut un autre vecteur derrière, c'est un peu facile, je trouve. Voilà, donc ne comptez pas sur Github pour vous défendre et signez vos commits, activez Vigilant Mode, et apprenez à vos collègues et amis dev à vérifier le badge "Verified" avant de merger quoi que ce soit en venant d'un inconnu... même si c'est ce bon cher Linus qui propose de réécrire le kernel en Rust avec systemd intégré ^^.
![]()
Et si je vous disais qu'on pouvait faire tourner Firefox dans un terminal ? Et pas un navigateur en mode texte, hein. Non, le véritable Firefox, avec ses onglets, les images, la totale... Hé oui c'est possible et que ça fonctionne via SSH, donc depuis un serveur distant. Bienvenue dans le futur (ou le passé, j'sais plus trop) !
Term.everything c'est un compositeur Wayland construit from scratch en Go qui, au lieu de balancer l'image sur votre écran, la convertit en caractères ANSI et l'affiche dans le terminal. Du coup, n'importe quelle app GUI Linux peut tourner là-dedans. Firefox, un gestionnaire de fichiers, un lecteur vidéo... et même Doom (parce que si ça peut pas faire tourner Doom, ça compte pas). Le binaire fait une poignée de Mo, c'est sous licence AGPL-3.0, et y'a zéro dépendance externe.
L'outil propose 2 modes d'affichage. Le mode basique qui convertit les pixels en blocs Unicode, et dont la qualité dépend du nombre de lignes et colonnes de votre terminal. Plus vous zoomez out (Ctrl+- sur Alacritty), plus c'est net... mais plus ça rame. Donc si votre terminal supporte le protocole image, genre Kitty ou iTerm2, l'autre mode, c'est du rendu pleine résolution et là non seulement c'est pas dégeu mais en plus ça marche bien !
Le truc vraiment dingue, c'est surtout le SSH parce que si vous avez un serveur Linux distant, vous vous connectez dessus en SSH, vous lancez term-everything firefox et hop, Firefox s'affiche dans votre terminal local. Pas de X11 forwarding relou à mettre en place ni de VNC / RDP zarbi.
Pour les admins sys qui gèrent des serveurs headless, c'est quand même sympa ! D'ailleurs si vous aimez les outils SSH bien pensés , celui-ci aussi va vous plaire.
Par contre, on est encore en bêta et certaines apps vont planter ou refuser de se lancer. C'est normal, c'est un compositeur Wayland complet écrit par un seul gars (chapeau l'artiste !). Ce n'est donc pas le genre de truc qu'on met en prod, mais pour du dépannage sur un serveur Debian distant ou juste pour la beauté du geste, ça envoie du pâté.
Le créateur de term.everything est d'ailleurs le même qui avait codé Fontemon , un jeu vidéo caché dans une police de caractères. On est donc clairement dans la catégorie "parce qu'on peut le faire et que c'est marrant".
Bref, si vous voulez épater vos collègues en lançant KDE dans un terminal par-dessus SSH, ou juste jouer à Doom dans tmux, c'est par là que ça se passe.
Amusez-vous bien et merci à Lorenper pour l'info !
![]()
I'm trying to login using ssh keys but server is only allows to login me using a password. The following message is logged into my Linux or Unix server /var/log/secure or /var/log/auth.log file:
Feb 25 06:36:50 ns5 sshd[26681]: Authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys2
Here is another message:
May 24 18:28:35 ls-www-1 sshd[531320]: Connection closed by 18.1.2.3 port 43640 [preauth]
May 24 18:28:44 ls-www-1 sshd[531322]: Authentication refused: bad ownership or modes for file /home/admin/.ssh/authorized_keys
May 24 18:28:44 ls-www-1 sshd[531322]: Connection closed by authenticating user admin 18.1.2.3 port 43650 [preauth]
How do I fix this problem?
Love this? sudo share_on: Twitter - Facebook - LinkedIn - Whatsapp - Reddit
The post SSH Authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys appeared first on nixCraft.
![]()
Like every other solo developer and sysadmin, I do stuff using ssh. Some stuff is automated using scripts, and others require ssh login. For example, one of my scripts logs into my Linux and FreeBSD server using public ssh keys and does a particular type of work for me. I have a dedicated user account for that purpose called autovivek on Raspberry PI 4 for Ansible and custom script automation. Here is how it works:
{rpi4:~}$ ssh autovivek@192.168.2.17 /path/to/taks1
In other cases, it sends scripts and then executes them on the remote server named 192.168.2.17. Sounds good, right? So, when I need to make backups and other tasks, I lock down the autovivek user account on the server so that it will not modify data on disks. For example, here is how to lock down a user account:
{linux-server:~}$ sudo usermod -L -e 1 autovivek
## OR ##
{freebsd-server:~}$ sudo pw lock -n autovivek
However, I soon discovered that a user named autovivek can still log into the server and make changes despite being locked down on both Linux and FreeBSD servers.
Love this? sudo share_on: Twitter - Facebook - LinkedIn - Whatsapp - Reddit
The post A cautionary tale about locking Linux & FreeBSD user accounts appeared first on nixCraft.
{nixCraft Patreon supporters content}
All Linux and Unix servers are managed manually or by automation tools such as Ansible using ssh. For example, say you have a server at Linode or AWS. Then you copy your public ssh key to a remote cloud server. Once copied, you can now login to those servers without a password as long as ssh keys are matched. It is the best practice. Unfortunately, you are not protecting ssh keys stored on a local desktop or dev machine at $HOME/.ssh/ directory. If your keys are stolen, an attacker can get access to all of your cloud servers, including backup servers. To avoid this mess, we can protect our ssh keys stored on local dev/desktop machines using physical security keys such as YubiKey.![]()
![]()
The post How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2) appeared first on Opensource Flare✨.
Want to display a message or banner before OpenSSH (SSHD server) authentication? Try this simple tip to show the banner or ASCII logo on your Linux or Unix system.
The post Quick tip: Display banner/message before OpenSSH authentication appeared first on nixCraft.
How do I use the ssh-agent command for non-interactive authentication on Linux and Unix-like systems such as macOS or FreeBSD desktop? My private key is protected with a passphrase or password. So I need have to enter the passphrase to use the ssh private key for authentication multiple times. How can I tell ssh ask the passphrase one time only?
The post How to use ssh-agent for authentication on Linux / Unix appeared first on nixCraft.
I have installed FreeBSD jail and set up an IP address. However, I am unable to ssh directly into my FreeBSD jail. How do I enable OpenSSH SSHD on the FreeBSD server?
The post How to enable SSHD on FreeBSD server / jail appeared first on nixCraft.
Enabling two-factor authentication (2FA) to boost security for your important accounts is becoming a lot more common these days. However you might be surprised to learn that you can do the same with your Raspberry Pi. You can enable 2FA on Raspberry Pi, and afterwards you’ll be challenged for a verification code when you access it remotely via Secure Shell (SSH).
A lot of people use a Raspberry Pi at home as a file, or media, server. This is has become rather common with the launch of Raspberry Pi 4, which has both USB 3 and Gigabit Ethernet. However, when you’re setting up this sort of server you often want to run it “headless”; without a monitor, keyboard, or mouse. This is especially true if you intend tuck your Raspberry Pi away behind your television, or somewhere else out of the way. In any case, it means that you are going to need to enable Secure Shell (SSH) for remote access.
However, it’s also pretty common to set up your server so that you can access your files when you’re away from home, making your Raspberry Pi accessible from the Internet.
Most of us aren’t going to be out of the house much for a while yet, but if you’re taking the time right now to build a file server, you might want to think about adding some extra security. Especially if you intend to make the server accessible from the Internet, you probably want to enable two-factor authentication (2FA) using Time-based One-Time Password (TOTP).
Two-factor authentication is an extra layer of protection. As well as a password, “something you know,” you’ll need another piece of information to log in. This second factor will be based either on “something you have,” like a smart phone, or on “something you are,” like biometric information.
We’re going to go ahead and set up “something you have,” and use your smart phone as the second factor to protect your Raspberry Pi.
The first thing you should do is make sure your Raspberry Pi is up to date with the latest version of Raspbian. If you’re running a relatively recent version of the operating system you can do that from the command line:
$ sudo apt-get update $ sudo apt-get full-upgrade
If you’re pulling your Raspberry Pi out of a drawer for the first time in a while, though, you might want to go as far as to install a new copy of Raspbian using the new Raspberry Pi Imager, so you know you’re working from a good image.
The Raspbian operating system has the SSH server disabled on boot. However, since we’re intending to run the board without a monitor or keyboard, we need to enable it if we want to be able to SSH into our Raspberry Pi.
The easiest way to enable SSH is from the desktop. Go to the Raspbian menu and select “Preferences > Raspberry Pi Configuration”. Next, select the “Interfaces” tab and click on the radio button to enable SSH, then hit “OK.”
You can also enable it from the command line using systemctl:
$ sudo systemctl enable ssh $ sudo systemctl start ssh
Alternatively, you can enable SSH using raspi-config, or, if you’re installing the operating system for the first time, you can enable SSH as you burn your SD Card.
Next, we need to tell the SSH daemon to enable “challenge-response” passwords. Go ahead and open the SSH config file:
$ sudo nano /etc/ssh/sshd_config
Enable challenge response by changing ChallengeResponseAuthentication from the default no to yes.
Editing /etc/ssh/ssd_config.
Then restart the SSH daemon:
$ sudo systemctl restart ssh
It’s good idea to open up a terminal on your laptop and make sure you can still SSH into your Raspberry Pi at this point — although you won’t be prompted for a 2FA code quite yet. It’s sensible to check that everything still works at this stage.
The first thing you need to do is download an app to your phone that will generate the TOTP. One of the most commonly used is Google Authenticator. It’s available for Android, iOS, and Blackberry, and there is even an open source version of the app available on GitHub.
Google Authenticator in the App Store.
So go ahead and install Google Authenticator, or another 2FA app like Authy, on your phone. Afterwards, install the Google Authenticator PAM module on your Raspberry Pi:
$ sudo apt install libpam-google-authenticator
Now we have 2FA installed on both our phone, and our Raspberry Pi, we’re ready to get things configured.
You should now run Google Authenticator from the command line — without using sudo — on your Raspberry Pi in order to generate a QR code:
$ google-authenticator
Afterwards you’re probably going to have to resize the Terminal window so that the QR code is rendered correctly. Unfortunately, it’s just slightly wider than the standard 80 characters across.
The QR code generated by google-authenticator. Don’t worry, this isn’t the QR code for my key; I generated one just for this post that I didn’t use.
Don’t move forward quite yet! Before you do anything else you should copy the emergency codes and put them somewhere safe.
These codes will let you access your Raspberry Pi — and turn off 2FA — if you lose your phone. Without them, you won’t be able to SSH into your Raspberry Pi if you lose or break the device you’re using to authenticate.
Next, before we continue with Google Authenticator on the Raspberry Pi, open the Google Authenticator app on your phone and tap the plus sign (+) at the top right, then tap on “Scan barcode.”
Your phone will ask you whether you want to allow the app access to your camera; you should say “Yes.” The camera view will open. Position the barcode squarely in the green box on the screen.
Scanning the QR code with the Google Authenticator app.
As soon as your phone app recognises the QR code it will add your new account, and it will start generating TOTP codes automatically.
The TOTP in Google Authenticator app.
Your phone will generate a new one-time password every thirty seconds. However, this code isn’t going to be all that useful until we finish what we were doing on your Raspberry Pi. Switch back to your terminal window and answer “Y” when asked whether Google Authenticator should update your .google_authenticator file.
Then answer “Y” to disallow multiple uses of the same authentication token, “N” to increasing the time skew window, and “Y” to rate limiting in order to protect against brute-force attacks.
You’re done here. Now all we have to do is enable 2FA.
We’re going to use Linux Pluggable Authentication Modules (PAM), which provides dynamic authentication support for applications and services, to add 2FA to SSH on Raspberry Pi.
Now we need to configure PAM to add 2FA:
$ sudo nano /etc/pam.d/sshd
Add auth required pam_google_authenticator.so to the top of the file. You can do this either above or below the line that says @include common-auth.
Editing /etc/pam.d/sshd.
As I prefer to be prompted for my verification code after entering my password, I’ve added this line after the @include line. If you want to be prompted for the code before entering your password you should add it before the @include line.
Now restart the SSH daemon:
$ sudo systemctl restart ssh
Next, open up a terminal window on your laptop and try and SSH into your Raspberry Pi.
If everything has gone to plan, when you SSH into the Raspberry Pi, you should be prompted for a TOTP after being prompted for your password.
SSH’ing into my Raspberry Pi.
You should go ahead and open Google Authenticator on your phone, and enter the six-digit code when prompted. Then you should be logged into your Raspberry Pi as normal.
You’ll now need your phone, and a TOTP, every time you ssh into, or scp to and from, your Raspberry Pi. But because of that, you’ve just given a huge boost to the security of your device.
Now you have the Google Authenticator app on your phone, you should probably start enabling 2FA for your important services and sites — like Google, Twitter, Amazon, and others — since most bigger sites, and many smaller ones, now support two-factor authentication.
The post Setting up two-factor authentication on your Raspberry Pi appeared first on Raspberry Pi.
Have you ever considered attaching your Raspberry Pi 4 to an Apple iPad Pro? How would you do it, and why would you want to? Here’s YouTuber Tech Craft to explain why Raspberry Pi 4 is their favourite iPad Pro accessory, and why you may want to consider using yours in the same way.
We’ve set the video to start at Tech Craft’s explanation.
My Favourite iPad Pro Accessory: The Raspberry Pi 4
The Raspberry Pi 4 is my favourite accessory to use with the iPad Pro. In this video, learn more about what the Pi can do, what gear you need to get running with one, how to connect it to your iPad and what you’ll find it useful for.
Having installed Raspbian on Raspberry Pi and configured the computer to use USB-C as an Ethernet connection (read Ben Hardill’s guide to find out how to do this), Tech Craft could select it as an Ethernet device in the iPad’s Settings menu.
So why would you want to connect your Raspberry Pi 4 to your iPad? For starters, using your iPad instead of a conventional HDMI monitor will free up desk space, and also allow you to edit your code on the move. And when you’ve connected the two devices like this, you don’t need a separate power lead for Raspberry Pi, because the iPad powers the computer. So this setup is perfect for train or plane journeys, or for that moment when your robot stops working at a Raspberry Jam, or for maker conventions.
You can also use Raspberry Pi as a bridge between your iPad and portable hard drive, for disk management.
Tech Craft uses the SSH client Blink to easily connect to their Raspberry Pi via its fixed IP address, and with Juno Connect, they connect to a running Jupyter instance on their Raspberry Pi to do data science work.
For more information on using Raspberry Pi with an iPad, make sure you watch the whole video. And, because you’re a lovely person, be sure to subscribe to Tech Craft for more videos, such as this one on how to connect wirelessly to your Raspberry Pi from any computer or tablet:
Mobile Raspberry Pi with ANY iPad. No USB-C needed.
Following on my from earlier video about pairing the Raspberry Pi 4 with the iPad Pro over USB-C, this video show how to pair any iPad (or iPhone, or Android tablet) with a Pi4 or a Pi3 over WiFi.
The post Connect your Raspberry Pi 4 to an iPad Pro appeared first on Raspberry Pi.
SSH, short for Secure Shell, is a protocol for secure network communications. It is widely used for executing commands on remote servers, and for file uploads or downloads. If you are working with Django, use Git version control, or administrate servers, you surely are using SSH. In this post, I want to share some technical details about it.
Secure Shell is using private and public key pairs. You can either use automatically generated private and public keys combined with a password, or manually generated private and public keys. In the latter case, you need to keep your private key on your computer and upload the public key to the remote server.
If you are using GitHub, Bitbucket, DigitalOcean, or some other service, you might have seen the possibility to upload public SSH keys for direct access to remote servers.
Here is how you usually create the SSH keys on the computer from which you want to establish a secure connection (your local machine or one of your servers that has access to other servers or services). In the Terminal you would execute these commands:
$ ssh-keygen
$ ssh-agent /usr/local/bin/bash
$ ssh-add ~/.ssh/id_rsaThe id_rsa is the name of the default SSH private key. The public key would be id_rsa.pub. And by default they both will be located under ~/.ssh/.
When running ssh-keygen you can choose different key names and even add a passphrase. For instance, you could have github_id_rsa and github_id_rsa.pub keys for communication with GitHub. My recommendation would be for each new service to create a new private-public key pair so that in case you need to transfer your computer's data to a different machine, you could selectively transfer the access to the remote servers.
Also, if you are not using the passphrase for the SSH key pair, I would recommend having your disk encrypted and a secure user password for your computer. If your laptop gets stolen, the thief wouldn't be able to get to your remote servers without knowing your computer's password.
In the case of GitHub, Bitbucket, and other online services with SSH communication, you usually have to copy the contents of the public key into a text field in a web form.
If you want to create a secure communication by manually generated private-public keys with a server where your Django project is deployed, you should append the contents of the public key to the ~/.ssh/authorized_keys file on the remote server.
To get the content of the public key in the Terminal, you can use:
$ cat ~/.ssh/id_rsa.pubThen copy the output to the clipboard.
Or on macOS you can run pbcopy as follows:
$ pbcopy < ~/.ssh/id_rsa.pub To append the contents of the public key to the remote server, you can do this:
$ echo "...pasted public key...">>~/.ssh/authorized_keysIf you want to establish an SSH connection with a password and automatically generated private-public keys, you would need to edit /etc/ssh/sshd_config and ensure these two settings:
PasswordAuthentication yes
PermitEmptyPasswords noAfter the change, you would restart the ssh server with the following command:
$ sudo service ssh restartAlso, make sure that the user you are connecting with has a password:
$ sudo passwd the_userThe default way to connect via SSH to a remote server with a password is executing the following in the Terminal:
$ ssh the_user@example.comTo connect with a private key, you would execute this:
$ ssh -i ~/.ssh/examplecom_id_rsa the_user@example.comNext, let's see how we can simplify this using some local SSH configuration.
Edit ~/.ssh/config and add the following lines for each SSH connection that you want to define:
Host examplecom
HostName example.com
User the_user
IdentityFile ~/.ssh/examplecom_id_rsaIf the domain of the website is not yet pointing to the IP address of the server, you can also connect by IP address:
Host examplecom
HostName 1.2.3.4
User the_user
IdentityFile ~/.ssh/examplecom_id_rsaThe following allows you to login to your remote servers by manually generated private-public key with just these lines:
$ ssh examplecomTo request for password instead of using the manually generated keys, you would need to modify the snippet as follows:
Host examplecom
HostName example.com
User the_user
PubkeyAuthentication=noWhen you connect via SSH and wait don't type anything for 30 minutes or so, the connection gets lost. But you can require your client to connect to the server every 4 minutes or so by adding the following lines to the beginning of the ~/.ssh/config on your local computer:
Host *
ServerAliveInterval 240Typically, Secure Shell allows you to execute terminal commands on the remote server using bash, zsh, sh, or another shell. But very often, you also need to transfer files securely to and from the server. For that, you have these options: scp command, rsync command, or FTP client with SFTP support.
The scp stands for Secure Copy.
This is how you would copy the secrets.json file from the remote server to your local development environment:
$ scp the_user@example.com:~/src/myproject/myproject/settings/secrets.json ./myproject/settings/secrets.jsonHere is an example of the same, but with custom ~/.ssh/config configuration:
$ scp examplecom:~/src/myproject/myproject/settings/secrets.json ./myproject/settings/secrets.jsonTo copy the file from the local computer to the remote server, you would switch the places of source and target:
$ scp ./myproject/settings/secrets.json examplecom:~/src/myproject/myproject/settings/secrets.jsonTo synchronize directories on the server and locally, you can use the rsync command. This is how to do it for downloading the media/ directory (note that the trailing slashes matter):
$ rsync --archive --compress --partial --progress the_user@example.com:~/src/myproject/myproject/media/ ./myproject/media/Here is an example of the same with a custom ~/.ssh/config configuration:
$ rsync --archive --compress --partial --progress examplecom:~/src/myproject/myproject/media/ ./myproject/media/To upload the media/ directory to the remote server, you would again switch places for the source and target:
$ rsync --archive --compress --partial --progress ./myproject/media/ examplecom:~/src/myproject/myproject/media/FTP clients like Transmit allow you to have SFTP connections either by username and password or by username and private key. You can even generate the private-public keys directly in the app there.
SFTP works like FTP, but all communication is encrypted there.
Use only encrypted connections for your network communications, encrypt your hard disk if you use manually generated private-public keys, and use strong passwords.
Be safe!
Cover photo by Jason D.
I want to start command called foo, and kill it if still running after given DURATION in seconds. How do I run a command a time Limit on Linux? How do I run a Linux command, and have it timeout (abort) after N seconds?
The post Linux run a command with a time limit (timeout) appeared first on nixCraft.
My ssh log file shows too many password failures. Random IP address trying to brute force my sshd server running on CentOS 8 server. How do I protect ssh with fail2ban on CentOS 8 Linux server? How do I install Fail2Ban on CentOS 8?
The post How To Protect SSH With Fail2Ban on CentOS 8 appeared first on nixCraft.