Impossible de copier ~ / .ssh / id_rsa.pub

117

Je suis dans la génération de clés SSH , il dit

sudo apt-get install xclip

Télécharge et installe xclip. Si vous ne l'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 couru, xclip -sel clip < ~/.ssh/id_rsa.pubj'obtiens Error: Can't open display: (null) Quel est le problème? J'ai cherché sur Google mais je n'ai rien trouvé à ce sujet

cqcn1991
la source
Que echo $DISPLAYdit-on?
Fred Foo
rien. J'exécute cette commande sur un serveur via ssh
Michael Pacheco

Réponses:

123

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

cat ~/.ssh/id_rsa.pub

pour obtenir votre clé publique

Jahdere
la source
11
Cela devrait être la réponse numéro 1 pour quiconque essaie de copier le contenu d'un fichier via ssh
dval
23
Sauf lorsque vous essayez de copier un long fichier.
Flavian Hautbois
26
@dval, je ne suis pas d'accord que ce sera la réponse numéro 1, car la question mentionne l' xcliputilisation non seulement l'affichage de la clé SSH dans un bash avec cat ~/.ssh/id_rsa.pub. Cependant, cela aide à résoudre le problème, car vous pouvez copier la valeur lorsqu'elle est affichée.
Nik Sumeiko
123
quelle?! comment cela peut résoudre le problème de xclip ne fonctionne pas?
VaTo
26
En fait, cette réponse est extrêmement trompeuse.
Hasan Can Saral
78

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

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

Grâce à cette page pour signaler que clip.exe de Windows (et vous devez taper le ".exe") peut être exécuté à partir du shell bash.

Marc Stober
la source
8
vous pouvez également utiliser des tuyaux cat ~/.ssh/id_rsa.pub | clip.esefonctionne juste
chriz
2
@chriz Je pense que vous voulez dire "exe" et non "ese"?
Marc Stober
3
oh ouais, désolé c'était juste une faute de frappe, c'est cat ~/.ssh/id_rsa.pub | clip.exe. Merci d'avoir fait remarquer cela.
chriz
1
@Moytaba CONTROL SHIFT V.
JoanComasFdz
1
et pour ceux qui ont préféré une commande unique sur toutes les plateformes: ajouter à votre ~/.bashrcou ~/.bash_profile: alias pbcopy="clip.exe". et merci à @chriz pour avoir signalé que le tuyau |fonctionne très bien.
Dio Phung
37

C'était une trop bonne réponse pour ne pas la publier ici. C'est d'un Gilles , un autre utilisateur de askubuntu :

Le presse - papiers est fourni par le serveur X . Peu importe que le serveur soit sans tête ou non, ce qui compte, c'est que votre session graphique locale soit disponible pour les programmes exécutés sur la machine distante. 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'une machine exécutant Linux. Assurez-vous que le transfert X11 est activé à la fois dans la configuration du client et dans la configuration du serveur. Dans la configuration du client, vous devez avoir la ligne ForwardX11 yesde ~/.ssh/configl'avoir par défaut, ou passer l'option -Xà la sshcommande juste pour cette session. Dans la configuration du serveur, vous devez avoir la ligne X11Forwarding yesen /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 de la DISPLAYvariable d'environnement: echo $DISPLAY. Vous devriez voir une valeur telle que localhost:10(les applications exécutées sur la machine distante sont invitées à se connecter à un écran fonctionnant sur la même machine, mais cette connexion d'affichage est en fait transmise par SSH à votre écran côté client). Notez que s'il DISPLAYn'est pas défini, il ne sert à rien de le définir manuellement: la variable d'environnement est toujours correctement définie si le transfert est en place. Si vous devez diagnostiquer des problèmes de connexion SSH, passez l'option -vvvà sshpour obtenir une trace détaillée de ce qui se passe.

Si vous vous connectez par d'autres moyens, vous pouvez ou non être en mesure de réaliser le transfert X11. Si votre client exécute Windows, PuTTY prend en charge le transfert X11; vous devrez exécuter un serveur X sur la machine Windows tel que Xming .

Par Gilles de askubuntu

Carles Alcolea
la source
17

Si vous essayez d'utiliser xclip sur un 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

Peter Pshenichny
la source
10

J'ai lu la documentation que vous avez liée. C'est totalement idiot! xclipest juste un presse-papiers. 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 passer la $DISPLAYvariable d'environnement à la commande. Exécutez-le comme ceci:

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

Cela :0dépend bien sûr de l'affichage que vous utilisez. Si vous possédez un ordinateur de bureau typique, il est probable qu'il soit:0

hek2mgl
la source
7
Je reçois Error: Can't open display: :0. Au fait, j'accède à un VPS via Git Bash. VPS est Ubuntu, la machine locale est Windows7
cqcn1991
Je le pense. Mais je ne connais pas ubuntu. Pourriez-vous me donner des conseils?
cqcn1991
Lol, je ne suis pas payé du tout. J'utilise cat intead, mais dois le fomrat manuellement
cqcn1991
1
J'ai le même problème avec @ cqcn1991
Nam G VU
1
L'utilisation permet DISPLAY=:0 xclipégalement de supprimer le presse-papiers d'un travail. Dans mon cas, j'utilise atpour effacer le presse-papiers deux minutes après la copie.
majgis
9

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
VaTo
la source
8

Ce qui suit fonctionne également pour moi:

ssh <user>@<host>  "cat <filepath>"|pbcopy 
Dario
la source
fonctionne également en utilisant un fichier pem: ssh -i /chemin/myapp.pem <utilisateur> @ <host> "cat <filepath>" | pbcopy
alemol
4
Je pensais que pbcopy était une chose mac, pas Linux
Alexander Mills
1

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

user_to_acces = user hostName = nom d'hôte machine

Fadid
la source