Não é possível copiar ~ / .ssh / id_rsa.pub


117

Estou seguindo em Gerando chaves SSH , diz

sudo apt-get install xclip

# Baixa e instala o xclip. Se não tiver apt-get, pode ser necessário usar outro instalador (como yum)

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

# Copia o conteúdo do arquivo id_rsa.pub para a sua área de transferência

Mas depois que eu corro, xclip -sel clip < ~/.ssh/id_rsa.pubeu entendo Error: Can't open display: (null) Qual é o problema? Eu pesquisei, mas não encontrei nada sobre isso


O que quer echo $DISPLAYdizer?
Fred Foo,

nada. Estou executando este comando em um servidor via ssh
Michael Pacheco

Respostas:


123

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pubnão funcionou para mim ( ubuntu 14.04), mas você pode usar:

cat ~/.ssh/id_rsa.pub

para obter sua chave pública


11
Esta deve ser a resposta número 1 para qualquer um que esteja tentando copiar o conteúdo do arquivo via ssh
dval

23
Exceto quando você está tentando copiar um arquivo longo.
Flavian Hautbois

26
@dval, não concordo que seja a resposta número 1, porque a pergunta menciona o xclipuso não apenas a exibição da chave SSH em um bash com cat ~/.ssh/id_rsa.pub. No entanto, isso ajuda a resolver o problema, porque você pode copiar o valor quando ele for exibido.
Nik Sumeiko

123
o que?! como isso pode resolver o problema do xclip não funcionar?
VaTo

26
Na verdade, essa resposta é extremamente enganosa.
Hasan Can Saral

78

Com base na data desta pergunta, o autor da postagem original não estaria usando o subsistema Windows para Linux . Mas se você estiver e receber o mesmo erro, a seguinte alternativa funciona:

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

Graças a esta página por apontar o clip.exe do Windows (e você tem que digitar o ".exe") pode ser executado a partir do shell bash.


8
você também pode usar tubos cat ~/.ssh/id_rsa.pub | clip.esesimplesmente funciona
chriz

2
@chriz Acho que você quer dizer "exe" e não "ese"?
Marc Stober

3
oh sim, desculpe, isso foi apenas um erro de digitação, é cat ~/.ssh/id_rsa.pub | clip.exe. Obrigado por apontar isso.
chriz

1
@Moytaba CONTROL SHIFT V.
JoanComasFdz

1
e para aqueles que preferem um único comando em todas as plataformas: adicione isso ao seu ~/.bashrcou ~/.bash_profile: alias pbcopy="clip.exe". e obrigado a @chriz por apontar que a tubulação |funciona perfeitamente.
Dio Phung

37

Essa foi uma resposta muito boa para não postar aqui. É de um Gilles , um colega usuário do askubuntu :

A área de transferência é fornecido pelo servidor X . Não importa se o servidor é headless ou não, o que importa é que sua sessão gráfica local esteja disponível para programas em execução na máquina remota. Graças ao design transparente de rede do X, isso é possível.

Presumo que você esteja se conectando ao servidor remoto com SSH de uma máquina com Linux. Certifique-se de que o encaminhamento do X11 esteja habilitado tanto na configuração do cliente quanto na configuração do servidor. Na configuração do cliente, você precisa ter a linha ForwardX11 yesem ~/.ssh/configtê-lo ligado por padrão, ou passar a opção -Xpara o sshcomando apenas para essa sessão. Na configuração do servidor, você precisa ter a linha X11Forwarding yesem /etc/ssh/sshd_config (ele está presente por padrão no Ubuntu).

Para verificar se o encaminhamento X11 é ativado, olhar para o valor da DISPLAYvariável de ambiente: echo $DISPLAY. Você deve ver um valor como localhost:10(os aplicativos em execução na máquina remota são informados para se conectar a um monitor em execução na mesma máquina, mas a conexão do monitor é, na verdade, encaminhada por SSH para o monitor do lado do cliente). Observe que, se DISPLAYnão estiver definido, não adianta defini-lo manualmente: a variável de ambiente é sempre definida corretamente se o encaminhamento estiver em vigor. Se você precisa para diagnosticar problemas de conexão SSH, passe a opção -vvvpara sshobter um traço detalhada do que está acontecendo.

Se você estiver se conectando por outro meio, pode ou não conseguir o encaminhamento X11. Se o seu cliente estiver executando o Windows, o PuTTY oferece suporte ao encaminhamento X11; você terá que executar um servidor X na máquina Windows, como o Xming .

Por Gilles de askubuntu



10

Leia a documentação que você vinculou. Isso é totalmente bobo! xclipé apenas uma prancheta. Você encontrará outras maneiras de copiar e colar a chave ... (tenho certeza)


Se você não estiver trabalhando dentro de uma sessão gráfica X, você precisa passar o $DISPLAYambiente var para o comando. Execute assim:

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

Claro que :0depende do monitor que você está usando. Se você tem uma máquina desktop típica, é provável que seja:0


7
Eu entendo Error: Can't open display: :0. A propósito, estou acessando um VPS pelo Git Bash. VPS é ubuntu, máquina local é windows7
cqcn1991

Acho que sim. Mas não estou familiarizado com o Ubuntu. Você poderia me dar um conselho?
cqcn1991,

Lol, eu não sou pago. Eu uso o gato, mas preciso formá-lo manualmente
cqcn1991

1
Tenho o mesmo problema com @ cqcn1991
Nam G VU

1
Usar DISPLAY=:0 xcliptambém funciona para limpar a área de transferência de um trabalho. No meu caso, estou usando atpara limpar a área de transferência dois minutos após a cópia.
majgis

9

Experimente isso e vai funcionar como um encanto. Eu estava tendo o mesmo erro, mas essa abordagem funcionou para mim:

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

8

O seguinte também está funcionando para mim:

ssh <user>@<host>  "cat <filepath>"|pbcopy 

funciona também usando um arquivo pem: ssh -i /path/myapp.pem <user> @ <host> "cat <filepath>" | pbcopy
alemol

4
Achei que o PBCopy fosse uma coisa do Mac, não do Linux
Alexander Mills

1

adicione pelo usuário root este comando: ssh user_to_acces @ hostName -X

user_to_acces = usuário hostName = hostname máquina

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.