comment ssh -Y puis su - <un autre utilisateur> et toujours transférer les applications X à votre machine locale

13

Il est assez facile de «récupérer» (c'est-à-dire dessiner localement) une application linux exécutée à distance: si je me connecte ssh -Yà la machine distante et que j'exécute une application, cette application apparaîtra sûrement assez sur mon bureau local.

Si, cependant, pendant que je suis ssh'ed sur la machine distante, je le fais suà un autre utilisateur, je ne peux pas transférer l'application X sur ma machine locale. Ça dit wrong authentication.

Je ne sais pas comment aborder cette affaire. Le echo $DISPLAYest toujours correct (défini par la ssh -Yconnexion initiale ), mais le cookie de session n'est probablement défini que pour l'utilisateur initial qui s'est connecté à ssh.

Comment puis-je surmonter cette difficulté et transférer d'autres applications X exécutées par différents utilisateurs?

La raison pour laquelle je ne ssh'ing pas directement est parce que je ne veux pas que cet utilisateur soit accessible via ssh (c'est l'utilisateur "virtualbox", qui est évidemment une cible facile pour les bots essayant de ssh sur ce serveur) ...

nass
la source

Réponses:

12

Lorsque vous vous connectez à une machine supprimée via ssh avec le transfert X11 activé, ssh sur le serveur crée un .Xauthorityfichier dans le répertoire personnel de l'utilisateur. Parce que ssh écoute X11 sur un socket TCP, tout le monde peut se connecter. Parce que tout le monde peut se connecter, nous avons besoin d'un moyen d'empêcher n'importe qui d'utiliser votre écran. Cela se fait avec ce .Xauthorityfichier. Le fichier contient un "cookie" qui est présenté au serveur X11 qui vérifie que le client doit être autorisé à se connecter.

En ignorant tous les détails, si vous copiez ce .Xauthorityfichier dans le répertoire de base de votre utilisateur cible (et lui donnez la propriété), vous devriez pouvoir vous connecter.

Patrick
la source
Il convient de noter que même après cela, la variable DISPLAY doit être définie correctement après avoir changé d'utilisateur. Cela peut être un problème lors de l'utilisation de 'sudo' qui peut filtrer l'environnement.
Chris Arguin
8
  1. ssh -Y à la machine distante comme vous-même.
  2. Une fois là-bas, tapez xauth list. Une liste d'articles MAGIC-COOKIE apparaît. Votre session de connexion est probablement la dernière de la liste. (Vérifiez cela en examinant le nom d'hôte et le code du numéro UNIX, et en le comparant avec le nom d'hôte à partir duquel vous avez décortiqué et votre variable locale localhost: ## DISPLAY env.)
  3. Changer d'utilisateur.
  4. Tapez xauth add+ toute la ligne MAGIC-COOKIE par le haut.
  5. Les graphiques devraient apparaître maintenant. Testez-le avec un rapide xlogo.
Excité
la source
2
pas de "+" dans xauth add. Par exemple, juste xauth ajouter ubuntu / unix: 10 MIT-MAGIC-COOKIE-1 6b49de7c34409d5ac69beab31d12ec94
Tuntable
1
USER="otherusername" && MAGIC_COOKIE=`xauth list | tail -n1` && su -c "xauth add $MAGIC_COOKIE" $USER && su - $USER
7yl4r
3

J'aime la réponse de Randy, mais cela n'a pas vraiment fonctionné pour moi.

Voici ce que j'ai pu travailler:

  1. ssh -Y as user1
  2. xauth list | grep `uname -n`
  3. Passer à l'utilisateur2
  4. unset XAUTHORITY
  5. xauth generate :0 .
  6. xauth add :0 . <KEY-FROM-STEP-2>

Notez les deux périodes des étapes 5 et 6.

Si je ne fais que suivre la réponse de Randy, la XAUTHORITYvariable de user2 pointe toujours vers le .Xauthorityfichier de user1 . Et sa syntaxe de la touche + ne fonctionnait pas.

Jon Daley
la source
2

Ce n'est pas une réponse, donc si vous en trouvez une, c'est évidemment préférable.

Sinon, et c'est la cause profonde de votre énigme:

La raison pour laquelle je ne ssh'ing pas directement est parce que je ne veux pas que cet utilisateur soit accessible via ssh (c'est l'utilisateur "virtualbox", qui est évidemment une cible facile pour les bots essayant de ssh sur ce serveur) ...

Cela ne me semble pas un excellent raisonnement. "Quels bots ciblent" WRT un sshd bien configuré est largement hors de propos. Vont-ils bourdonner autour du port 22 un peu partout? Apparemment oui. Est-ce à dire qu'ils ont réellement une chance de succès?

Essayez de parcourir Google pour une histoire sur quelqu'un qui a eu un bot anonyme aléatoire réussi à s'introduire dans sshd. Je suis sûr que cela a dû arriver à quelqu'un quelque part (et, bien sûr, vous ne le saurez peut-être jamais), mais je ne trouve aucun rapport à ce sujet. Il serait intéressant de lire la configuration utilisée.

SSH est très sécurisé lorsqu'il est utilisé correctement. Si ce n'était pas le cas, le commerce sur Internet ne serait pas possible. Alors, pourquoi ces robots dérangent-ils? Par «utilisé correctement», je veux dire, principalement, avec des paires de clés publiques / privées obligatoires. Si vous faites cela et êtes sûr que votre clé privée est sécurisée (et vous devriez l'être), faites confiance à sshd.

Je pense que la raison pour laquelle toutes les "tentatives d'effraction" se produisent est qu'il y a un grand nombre d'utilisateurs qui ne font pas des choses comme poser des questions sur U&L;) et ne lisent pas les pages de manuel et n'utilisent que la protection par mot de passe, ce qui est un peu comme laisser votre carte ATM dans une machine quelque part avec un panneau disant: "Devinez loin!".

Cependant, si vous considérez votre clé privée comme votre carte ATM - comme quelque chose que vous sécurisez physiquement (ce qu'elle est essentiellement), alors la cible devient beaucoup plus éthérée. Tout ce que ces robots peuvent faire, c'est prouver que oui, il faudrait vraiment des milliers de machines des milliers d'années à travailler ensemble pour forcer brutalement une clé de 2048 bits.

Si vous en avez marre de lire les rapports de tentatives d'effraction, changez de port. J'ai vu des gens ici poo-poo ceci comme "sécurité par obscurité", cependant, un sshd qui est correctement sécurisé sur le port 22 ne sera pas moins sécurisé sur le port 57, mais il ne sera pas dérangé au hasard. Bien sûr, tous vos ennemis drones pourraient simplement balayer le port entier de l'IP - mais vous savez quoi? Ils ne le font pas. Je suppose que c'est parce que ce qu'ils recherchent, c'est quelqu'un qui gère un système qui n'a même pas regardé /etc/ssh/sshd_config, beaucoup moins éduqué lui-même et réglé.

boucle d'or
la source
Je suis d'accord avec tout ce que vous dites. mais je suis toujours incroyablement précaire (n'est-ce pas ce qu'ils vous enseignent dans de nombreuses situations après que vous vous êtes brûlé?). Pour être honnête, le PC auquel j'essaie de me connecter est un pare-feu (pas d'accès de l'extérieur). C'est ssh est sur un port haut, a un mot de passe difficile, mais je ne peux pas m'empêcher de penser que "virtualbox" est un nom public. celui que quelqu'un quelque part peut choisir d'incorporer dans un code bot. Les clés SSH sont une merveilleuse solution, surtout si elles sont utilisées avec une protection par mot de passe. Mais je devrais avoir à transporter une distribution Linux légère sur USB si je devais les utiliser.
nass