web-dev-qa-db-fra.com

Erreur: Impossible d'ouvrir l'affichage: (null) lors de l'utilisation de Xclip pour copier la clé publique ssh

Je suis dans Génération de clés SSH , il est écrit

Sudo apt-get install xclip

# Télécharge et installe xclip. Si vous n'avez pas apt-get, vous devrez peut-être utiliser un autre programme d'installation (comme yum)

xclip -sel clip <~/.ssh/id_rsa.pub

# Copie le contenu du fichier id_rsa.pub dans votre presse-papiers

Mais après avoir lancéxclip -sel clip < ~/.ssh/id_rsa.pub, je reçois Error: Can't open display: (null) Quel est le problème? J'ai cherché sur Google mais je n'ai rien trouvé

69
cqcn1991

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pub n'a pas fonctionné pour moi (ubuntu 14.04), mais vous pouvez utiliser:

cat ~/.ssh/id_rsa.pub

pour obtenir votre clé publique 

82
Jahdere

Sur la base de la date de cette question, l’affiche originale n’aurait pas utilisé Sous-système Windows pour Linux . Mais si vous êtes et que vous obtenez la même erreur, l'alternative suivante fonctionne:

clip.exe < ~/.ssh/id_rsa.pub

Merci à cette page pour avoir souligné le clip.exe de Windows (et vous devez taper le ".exe") peut être exécuté à partir du shell bash.

25
Marc Stober

C'était trop bonne réponse de ne pas l'afficher ici. Cela provient d'un co-utilisateur dans askubuntu:

Le presse-papiers est fourni par le X Serveur . Cela n'a pas d'importance que le serveur soit sans tête ou non, l’important est que votre local La session graphique est disponible pour les programmes exécutés sur la télécommande machine. Grâce à la conception transparente du réseau de X, cela est possible.

Je suppose que vous vous connectez au serveur distant avec SSH à partir d'un fichier machine sous Linux. Assurez-vous que le transfert X11 est activé à la fois dans la configuration du client et dans la configuration du serveur. Dans le configuration cliente, vous devez avoir la ligne ForwardX11 yes en ~/.ssh/config pour l’activer par défaut, ou passez l’option -X à la commande ssh juste pour cette session. Dans la configuration du serveur, vous devez avoir la ligne X11Forwarding yes dans /etc/ssh/sshd_config (il est présent par défaut sur Ubuntu).

Pour vérifier si le transfert X11 est activé, regardez la valeur du fichier DISPLAY variable d'environnement: echo $DISPLAY. Vous devriez voir un Une valeur telle que localhost:10 (les applications s'exécutant sur la machine distante ont pour instruction de se connecter à un écran fonctionnant sur le même ordinateur, mais cette connexion est en fait transmise par SSH à votre écran client ). Notez que si DISPLAY n'est pas défini, il ne sert à rien de le régler manuellement: la variable d'environnement est toujours définie correctement si. le transfert est en place. Si vous avez besoin de diagnostiquer des problèmes de connexion SSH, Passez l'option -vvv à ssh pour obtenir une trace détaillée de ce que événement.

Si vous vous connectez par un autre moyen, vous pouvez être ou ne pas être capable de réaliser la transmission X11. Si votre client exécute Windows, PuTTY prend en charge le transfert X11; vous devrez exécuter un serveur X sur Windows machine telle que Xming .

-Gilles de askubuntu

19
Carles Alcolea

Si vous essayez d'utiliser xclip sur l'hôte distant, ajoutez simplement -X à votre commande ssh 

ssh user@Host -X

Des informations plus détaillées peuvent être trouvées ici: https://askubuntu.com/a/305681

13
Peter Pshenichny

Essayez ceci et cela fonctionnera comme un charme. J'avais la même erreur mais cette approche a fait l'affaire pour moi:

ssh USER@REMOTE "cat file"|xclip -i
7
VaTo

J'ai lu la documentation que vous avez liée. C'est totalement idiot! xclip est juste un presse-papier. Vous trouverez d'autres moyens de copier/coller la clé ... (j'en suis sûr)


Si vous ne travaillez pas depuis une session graphique X, vous devez transmettre la variable $DISPLAY à la commande. Exécutez-le comme ça:

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pub

Bien entendu, :0 dépend de l'écran que vous utilisez. Si vous avez un ordinateur de bureau typique, il est probable que ce soit :0

7
hek2mgl

Ce qui suit fonctionne également pour moi:

ssh <user>@<Host>  "cat <filepath>"|pbcopy 
5
Dario

ajoutez par l'utilisateur root cette commande: ssh user_to_acces @ hostName -X

user_to_acces = user hostName = nom_hôte ordinateur

0
Fadid