Bonjour,
J'effectue régulièrement la copie du même dossier depuis ma session dans mon école (sous debian 7 (sans accès root bien sur)) vers mon serveur (sous debian 7 également). En toute logique, il suffirais de faire un scp depuis le serveur (impossible dans l'autre sens, ssh ne fonctionne pas vers une ip externe à l'école).
Sauf que, à l'école j'affiche une image en ascii art au chargement du bashrc, ce qui fait planter scp, en couleur en plus avec tput, ce qui fait aussi planter scp, et surtout, ce que je ne peux pas me résoudre à enlever, j'ai un script qui demande un mot de passe lors du chargement du bashrc.
Ce que je fait pour le moment, c'est de me connecter au préalable en ssh, déplacer le bashrc, scp, remettre le bashrc
Mais j'aimerais beaucoup pouvoir automatiser le processus.
J'avais donc imaginé passer des arguments à mon bashrc qui permettent d'ignorer les étapes qui posent problème. Mais je ne suis même pas sur que ça soit possible…
Une idée ? voir même une solution ^ ^ ?
# Test de login interactif
Posté par littlebreizhman . Évalué à 5. Dernière modification le 12 avril 2015 à 20:21.
ça ne répond pas à ta question mais devrait éviter ton plantage de scp
De mémoire … pas (re)testé
A rajouter en début de ton .bashrc ou au moins avant le echo
[^] # Re: Test de login interactif
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
Ça ne devrait normalement servir à rien : le bashrc ne devrait même pas être lu pour les shells non interactifs !
[^] # Re: Test de login interactif
Posté par kna . Évalué à 2.
Peut-être a-t-il dans son ~/.profile :
[^] # Re: Test de login interactif
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
Peut-être, mais ça n'expliquerait rien. Le .profile est seulement lu par les shells Bash de connexion.
[^] # Re: Test de login interactif
Posté par littlebreizhman . Évalué à 2. Dernière modification le 13 avril 2015 à 14:37.
Certes mais a priori, dans son cas précis, il semble lu.
Sur une ubuntu 14.10 par défaut, et comme l'évoque le commentaire ci dessus, le .bashrc est appelé par le .profile (qui replace le .bash_profile ici)
D'après le manuel, le fichier profile est exécuté pour les "login shell" : scp est-il un "login shell" ?
[^] # Re: Test de login interactif
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 3.
Ah, voilà l'explication. scp, ça fait du ssh et ça lance des commandes genre cat pour transférer des fichiers. Donc fondamentalement, c'est comme ouvrir un simple ssh, et oui, ça doit être un shell de connexion !
[^] # Re: Test de login interactif
Posté par Sinistag . Évalué à 1.
Ça marche très bien !
Je me sens d'ailleurs très idiot, car
c'est probablement le caslorsque j'ai voulu rajouter la ligne, je me suis aperçu qu'il y avait déjà un petit bout de script avec pour commentaire "If not running interactively, don't do anything"… si j'avais inséré mon code juste après celui-là, tout aurais bien marché dès le début… Note pour moi-même, toujours lire tous les commentaires des scripts qu'on modifieQuand à savoir s'il s'agit du fonctionnement normal d'scp, la présence par défaut de la gestion du cas non-interactif semble indiquer que oui en tout logique…
J'ai une autre question, le fait est que si ma session semble bien sécurisé par demande de mot de passe dans le bashrc, il reside tout de même une grosse faille. En effet, un ctrl_c bien placé lors d'un ssh empêche le chargement normal du bashrc, donc de la demande de mot de passe, mais fait quand même la connexion, laissant l'utilisateur avec un terminal certes moche, mais totalement ouvert quand même… savez vous s'il est possible d'empêcher cela ? (je précise que je trap déjà le control c au tout début du .profile)
[^] # Re: Test de login interactif
Posté par littlebreizhman . Évalué à 2.
Heu, je suis loin d'être un expert en ssh and co mais l’authentification lors de la connexion ssh n'a rien à voir avec le .bashrc.
Sauf erreur de ma part, si le serveur ssh accepte la connexion, alors il poursuit en ouvrant une sessio et exécute le shell associé à l’utilisateur. Le ctrl +c devrait tuer la connexion tant que le mot de passe n'est pas tapé et peut être effectivement interrompre potentiellement l’exécution du .profile / .bashrc s'il est effectué dans les temps après authentification.
Ssh est quand même à la base un protocole sécurisé, cela serait étonnant qu'on puisse le truander ainsi, surtout depuis le temps que l'on s'en sert. Tu es sûr de ne pas avoir mise en place une authentification par clé ?
[^] # Re: Test de login interactif
Posté par Sinistag . Évalué à 1. Dernière modification le 14 avril 2015 à 01:05.
Bien sur que ssh en lui même n'a aucun problème de sécurité (connu du moins…).
Il fonctionne exactement comme il le doit, mais dans un environnement comme celui de mon école, il est quasi-necessaire d'ajouter une sécurité demandant un mot de passe supplémentaire qui ne puisse être esquivé d'aucune façon, parce que il suffit d'une seconde d'inattention et hop, une clef de plus dans le authorized_keys. Sans compter les petits scripts codé par des petits malins qui permettent de lancer divers jeux, et qui installent les clefs publiques au passage…
Malheureusement, il existe une façon simple d'esquiver la technique de demande de mot de passe à l'execution du bashrc: control+c juste après l'authentification par clef
[^] # Re: Test de login interactif
Posté par fearan . Évalué à 2.
j'ajouterai un ssh plop@example.com /bin/csh risque aussi de court-circuiter quelques rc ou .profile
Il faudrait que tu ajoutes dans ton ~/.ssh/rc les protections que tu souhaites; cependant elles seront aussi exécutées pour les commandes, et, probablement, le scp
De toutes façon quelle est l'utilité de réclamer un mot de passe dans le bash, la session n'est pas protégée?
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Test de login interactif
Posté par gouttegd . Évalué à 4.
Si on veut combiner l’authentification par clef publique avec une authentification par mot de passe, on peut configurer sshd pour s’en charger lui-même (
AuthenticationMethods publickey,password
) plutôt que se fier à un bidouillage du .bashrc…Je ne sais pas ce que c’est que cet environnement, mais si n’importe qui peut ajouter une clef publique dans le
~/.ssh/authorized_keys
(le dossier de l’utilisateur, y compris~/.ssh
, est accessible en écriture à tout le monde ? wtf ?), qu’est-ce qui empêcherait ce même n’importe qui de tripatouiller le~/.bashrc
pour, par exemple, supprimer la demande de mot de passe ?En fait, je dirais a priori qu’utiliser SSH dans un environnement pareil revient un peu à utiliser une porte blindée avec digicode juste à côté d’une fenêtre grande ouverte…
[^] # Re: Test de login interactif
Posté par fearan . Évalué à 2.
j'ajouterai que si un 'petit malin' a pu ajouter un clé ssh via un script ou un binaire, la sécurité du compte est déjà moisie; il suffit que le script fasse un petit cp de /bin/bash dans ~nuisible/owned/$USER suivi d'un chmod +s ~/nuisible/owned/$USER et il fait ce qu'il veut.
Il lui suffira de tapper ~/owned/user --noprofile --norc pour avoir accès à ton compte de manière invisible pour toi et cela même si tu changes tes clé ou mots de passe. Et le pire c'est qu'il lui suffit d'avoir un petit ajout dans un binaire librement accessible avec pleins de liens symbolique vers le dit binaire, qui après avoir fait leur crasse appel le binaire original.
Clairement, ajouter une clé est bien trop visible
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Test de login interactif
Posté par Sinistag . Évalué à 1.
En effet, on peu dire que la sécurité est complètement moisie. Tout est question de ratio sécurité/facilité. exemple : maintenant scp fonctionne car le bash ne lit plus le password dans le cas de l'utilisation d'scp. mais du coup, ben il suffit de remplacer le bashrc avec scp et plus de sécurité…
Autre exemple, si je lance le binaire de quelqu'un (par exemple un jeu) ben rien ne me dit qu'il ne fait pas un rm… mais je ne peu pas arrêter de faire quoi que ce soit simplement par peur…
Pour en revenir à scp, c'est en fait la raison pour laquelle je souhaitais à l'origine pouvoir passer des paramètre au bashrc, ainsi, scp aurais fourni le mot de passe, gardant ainsi une sécurité optimale.
De la même manière le script tel que j'utilise actuellement garantie (il me semble) une sécurité suffisante contre quelqu'un utilisant les clef ssh, à condition qu'on ne puisse abandonner l'execution du bashrc. Bien sur, le "petit malin" peu tout aussi bien réécrire le bashrc, mais c'est évidement pas très discret…
Et pour la technique que tu décrit fearan, je ne la connaissait pas, et c'est en effet dévastateur, à condition que ça marche… ce que je n'ai pas réussi à faire. En effet, après avoir fait le ~/owned/user --noprofile --norc, je suis toujours 'nuisible', et je n'ai pas accès à ~user. Bon, malgré le fait que je commence à savoir faire quelques truc en script unix, j'ai encore beaucoup à apprendre…
[^] # Re: Test de login interactif
Posté par fearan . Évalué à 2.
Oh c'est pas dur à tester suffit juste de convaincre un de tes camarade de faire un cp /bin/bash n'importe ou, faire un chmod +s dessus, et toi de faire le bash en question pour avoir l'uid de ton camarade ;) Bien plus discret que le rajout de clé ssh. Il est aussi possible que la partition home soit montée en nosuid, mais c'est une conf plutôt rare.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Test de login interactif
Posté par kna . Évalué à 1.
Normalement, ça ne doit pas être possible.
En tout cas par défaut, si les droits d'écriture de ~/.ssh ne sont pas restreint au compte correspondant, sshd loggue l'erreur « Authentication refused: bad ownership or modes for directory /home/user/.ssh » et ignore la clé (on peut encore se connecter avec un mot de passe si la config le permet).
[^] # Re: Test de login interactif
Posté par claudex . Évalué à 3.
C'est d'ailleurs bien relou quand on est confronté au problème.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
# Bizarre
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
C'est très curieux, il faudrait effectuer quelques tests pour regarder ce qui cause ça, parce que le bashrc n'est pas censé être interprété pour les shells non interactifs ! En fait, ce fichier est lu uniquement pour les shells interactifs qui ne sont pas des shells de login, même si cette restriction bizarre est généralement contournée en sourçant le bashrc depuis le fichier profile, qui est lu pour tous les shells interactifs.
http://tanguy.ortolo.eu/blog/article25/shrc
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.