No se puede copiar ~ / .ssh / id_rsa.pub

117

Estoy siguiendo en Generación de claves SSH , dice

sudo apt-get install xclip

Descarga e instala xclip. Si no lo tiene apt-get, es posible que deba usar otro instalador (como yum)

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

Copia el contenido del archivo id_rsa.pub en su portapapeles

Pero después de ejecutar xclip -sel clip < ~/.ssh/id_rsa.pubme sale Error: Can't open display: (null) ¿Cuál es el problema? Busqué en Google pero no encontré nada al respecto

cqcn1991
fuente
¿Qué echo $DISPLAYdice?
Fred Foo
nada. Estoy ejecutando este comando en un servidor a través de ssh
Michael Pacheco

Respuestas:

123

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pubno funcionó para mí ( ubuntu 14.04), pero puedes usar:

cat ~/.ssh/id_rsa.pub

para obtener tu clave pública

Jahdere
fuente
11
Esta debería ser la respuesta número 1 para cualquiera que intente copiar el contenido del archivo a través de ssh
dval
23
Excepto cuando intentas copiar un archivo largo.
Flavian Hautbois
26
@dval, no estoy de acuerdo en que sea la respuesta número 1, porque la pregunta menciona el xclipuso no solo mostrar la clave SSH en un bash con cat ~/.ssh/id_rsa.pub. Sin embargo, esto ayuda a resolver el problema, porque puede copiar el valor cuando se muestra.
Nik Sumeiko
123
¡¿qué?! ¿Cómo puede esto resolver el problema de que xclip no funciona?
VaTo
26
En realidad, esta respuesta es extremadamente engañosa.
Hasan Can Saral
78

Según la fecha de esta pregunta, el póster original no habría estado usando el Subsistema de Windows para Linux . Pero si es así y obtiene el mismo error, la siguiente alternativa funciona:

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

Gracias a esta página por señalar, el clip.exe de Windows (y debe escribir el ".exe") se puede ejecutar desde el shell bash.

Marc Stober
fuente
8
también puede usar tuberías cat ~/.ssh/id_rsa.pub | clip.esesimplemente funciona
chriz
2
@chriz Creo que te refieres a "exe" y no a "ese".
Marc Stober
3
oh sí, lo siento, fue solo un error tipográfico, es cat ~/.ssh/id_rsa.pub | clip.exe. Gracias por señalar eso.
chriz
1
@Moytaba V. CONTROL DE CAMBIO
JoanComasFdz
1
y para los que prefiere un solo comando en todas las plataformas: agregar esto a su ~/.bashrco ~/.bash_profile: alias pbcopy="clip.exe". y gracias a @chriz por señalar que la tubería |funciona bien.
Dio Phung
37

Esta fue una respuesta demasiado buena para no publicarla aquí. Es de Gilles , un compañero usuario de askubuntu :

El portapapeles es proporcionada por el servidor X . No importa si el servidor está sin cabeza o no, lo que importa es que su sesión gráfica local esté disponible para los programas que se ejecutan en la máquina remota. Gracias al diseño transparente de red de X, esto es posible.

Supongo que se está conectando al servidor remoto con SSH desde una máquina que ejecuta Linux. Asegúrese de que el reenvío X11 esté habilitado tanto en la configuración del cliente como en la configuración del servidor. En la configuración del cliente, es necesario tener la línea ForwardX11 yesde ~/.ssh/configtenerlo activado de forma predeterminada, o pasar la opción -Xa la sshorden de la misma para esa sesión. En la configuración del servidor, debe tener la línea X11Forwarding yesen /etc/ssh/sshd_config(está presente de forma predeterminada en Ubuntu).

Para comprobar si el reenvío por X11 está activado, mira el valor de la DISPLAYvariable de entorno: echo $DISPLAY. Debería ver un valor como localhost:10(a las aplicaciones que se ejecutan en la máquina remota se les dice que se conecten a una pantalla que se ejecuta en la misma máquina, pero esa conexión de pantalla se reenvía por SSH a la pantalla del lado del cliente). Tenga en cuenta que si DISPLAYno está configurado, no sirve de nada configurarlo manualmente: la variable de entorno siempre se configura correctamente si el reenvío está en su lugar. Si necesita diagnosticar problemas de conexión SSH, pase la opción -vvva sshpara obtener un seguimiento detallado de lo que está sucediendo.

Si se está conectando a través de otros medios, es posible que pueda o no lograr el reenvío X11. Si su cliente ejecuta Windows, PuTTY admite el reenvío X11; Tendrá que ejecutar un servidor X en la máquina con Windows, como Xming .

Por Gilles de askubuntu

Carles Alcolea
fuente
17

En caso de que esté intentando usar xclip en un host remoto, simplemente agregue -X a su comando ssh

ssh user@host -X

Puede encontrar información más detallada aquí: https://askubuntu.com/a/305681

Peter Pshenichny
fuente
10

Ha leído la documentación que ha vinculado. ¡Eso es totalmente tonto! xclipes solo un portapapeles. Encontrarás otras formas de copiar y pegar la clave ... (estoy seguro)


Si no está trabajando desde dentro de una sesión gráfica X, debe pasar el $DISPLAYentorno var al comando. Ejecútelo así:

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

Por supuesto, :0depende de la pantalla que esté utilizando. Si tiene una máquina de escritorio típica, es probable que sea:0

hek2mgl
fuente
7
Yo entiendo Error: Can't open display: :0. Por cierto, estoy accediendo a un VPS a través de Git Bash. VPS es ubuntu, la máquina local es
windows7
Creo que sí. Pero no estoy familiarizado con ubuntu. ¿Podrías aconsejarme?
cqcn1991
Lol, no me pagan en absoluto. Utilizo cat intead, pero necesito formarlo manualmente
cqcn1991
1
Tengo el mismo problema con @ cqcn1991
Nam G VU
1
El uso DISPLAY=:0 xcliptambién sirve para borrar el portapapeles de un trabajo. En mi caso, estoy usando atpara borrar el portapapeles dos minutos después de copiar.
majgis
9

Prueba esto y funcionará a las mil maravillas. Estaba teniendo el mismo error, pero este enfoque me funcionó:

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

Lo siguiente también me funciona:

ssh <user>@<host>  "cat <filepath>"|pbcopy 
Darío
fuente
también funciona con un archivo pem: ssh -i /path/myapp.pem <user> @ <host> "cat <filepath>" | pbcopy
alemol
4
Pensé que pbcopy era una cosa de mac, no de linux
Alexander Mills
1

agregar por el usuario root este comando: ssh user_to_acces @ hostName -X

user_to_acces = user hostName = hostname machine

Fadid
fuente