Nie można skopiować ~ / .ssh / id_rsa.pub

119

Podążam za generowaniem kluczy SSH , mówi

sudo apt-get install xclip

Pobiera i instaluje xclip. Jeśli nie masz apt-get, może być konieczne użycie innego instalatora (np. yum)

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

Kopiuje zawartość pliku id_rsa.pub do schowka

Ale po uruchomieniu xclip -sel clip < ~/.ssh/id_rsa.pubdostaję Error: Can't open display: (null) Jaki jest problem? Rozejrzałem się, ale nic na ten temat nie znalazłem

cqcn1991
źródło
Co echo $DISPLAYmówi?
Fred Foo
nic. Uruchamiam to polecenie na serwerze przez ssh
Michael Pacheco

Odpowiedzi:

125

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pubnie działa dla mnie ( ubuntu 14.04), ale możesz użyć:

cat ~/.ssh/id_rsa.pub

aby uzyskać klucz publiczny

Jahdere
źródło
11
To powinna być odpowiedź numer 1 dla każdego, kto próbuje skopiować zawartość pliku przez ssh
dval
23
Z wyjątkiem sytuacji, gdy próbujesz skopiować długi plik.
Flavian Hautbois
26
@dval, nie zgadzam się, że będzie to odpowiedź numer 1, ponieważ pytanie wspomina o xclipużyciu, a nie tylko wyświetlaniu klucza SSH w bashu z cat ~/.ssh/id_rsa.pub. Pomaga to jednak rozwiązać problem, ponieważ można skopiować wartość, gdy jest wyświetlana.
Nik Sumeiko
124
co?! jak to może rozwiązać problem niedziałającego xclip?
VaTo
26
Właściwie ta odpowiedź jest wyjątkowo myląca.
Hasan Can Saral
78

Opierając się na dacie tego pytania, oryginalny plakat nie używałby podsystemu Windows dla systemu Linux . Ale jeśli tak jest i pojawia się ten sam błąd, działa następująca alternatywa:

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

Dzięki tej stronie za wskazanie clip.exe systemu Windows (i musisz wpisać ".exe") można uruchomić z powłoki bash.

Marc Stober
źródło
8
możesz też użyć rur, cat ~/.ssh/id_rsa.pub | clip.esepo prostu działa
chriz
2
@chriz Myślę, że masz na myśli „exe”, a nie „ese”?
Marc Stober,
3
o tak, przepraszam, to była tylko literówka, to jest cat ~/.ssh/id_rsa.pub | clip.exe. Dzięki za zwrócenie uwagi.
chriz
1
@Moytaba CONTROL SHIFT V.
JoanComasFdz
1
i dla tych, którzy woleli jednego polecenia na wszystkich platformach: dodać to do Twojego ~/.bashrclub ~/.bash_profile: alias pbcopy="clip.exe". i dzięki @chriz za wskazanie rury |działa dobrze.
Dio Phung
37

To była zbyt dobra odpowiedź, żeby jej tutaj nie opublikować. To od Gillesa , innego użytkownika z askubuntu :

Schowek jest dostarczana przez serwer X . Nie ma znaczenia, czy serwer jest bezgłowy, czy nie, ważne jest, aby lokalna sesja graficzna była dostępna dla programów uruchomionych na zdalnym komputerze. Jest to możliwe dzięki przezroczystej sieci X projektu.

Zakładam, że łączysz się ze zdalnym serwerem za pomocą SSH z komputera z systemem Linux. Upewnij się, że przekazywanie X11 jest włączone zarówno w konfiguracji klienta, jak iw konfiguracji serwera. W konfiguracji klienta, trzeba mieć linię ForwardX11 yesw ~/.ssh/configgo mieć domyślnie lub przekazać opcję -Xdo sshpolecenia tylko dla tej sesji. W konfiguracji serwera, trzeba mieć linię X11Forwarding yesw /etc/ssh/sshd_config(jest obecny domyślnie w Ubuntu).

Aby sprawdzić, czy jest włączone przekazywanie X11, spójrz na wartość DISPLAYzmiennej środowiskowej: echo $DISPLAY. Powinieneś zobaczyć wartość taką jak localhost:10(aplikacje działające na zdalnym komputerze mają łączyć się z wyświetlaczem działającym na tym samym komputerze, ale to połączenie wyświetlacza jest w rzeczywistości przekazywane przez SSH do wyświetlacza po stronie klienta). Zauważ, że jeśli DISPLAYnie jest ustawione, nie ma sensu ustawiać go ręcznie: zmienna środowiskowa jest zawsze ustawiona poprawnie, jeśli przekazywanie jest na miejscu. Jeśli chcesz zdiagnozować problemy z połączeniem SSH, przekaż opcję -vvvdo, sshaby uzyskać szczegółowe informacje o tym, co się dzieje.

Jeśli łączysz się w inny sposób, możesz lub nie być w stanie osiągnąć przekazywania X11. Jeśli twój klient ma system Windows, PuTTY obsługuje przekazywanie X11; będziesz musiał uruchomić serwer X na komputerze z systemem Windows, taki jak Xming .

Przez Gilles od askubuntu

Carles Alcolea
źródło
17

Jeśli próbujesz użyć xclip na zdalnym hoście, po prostu dodaj -X do polecenia ssh

ssh user@host -X

Bardziej szczegółowe informacje można znaleźć tutaj: https://askubuntu.com/a/305681

Peter Pshenichny
źródło
10

Przeczytaj dokumentację, do której masz łącze. To totalnie głupie! xclipto tylko schowek. Znajdziesz inne sposoby kopiowania, wklejania klucza ... (jestem pewien)


Jeśli nie pracujesz w graficznej sesji X, musisz przekazać $DISPLAYkomendę zmienną środowiska. Uruchom to w ten sposób:

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

Oczywiście :0zależy to od używanego wyświetlacza. Jeśli masz typowy komputer stacjonarny, prawdopodobnie tak jest:0

hek2mgl
źródło
8
Rozumiem Error: Can't open display: :0. Przy okazji, mam dostęp do VPS przez Git Bash. VPS to ubuntu, lokalna maszyna to windows7
cqcn1991
Chyba tak. Ale nie znam Ubuntu. Czy możesz dać mi jakąś radę?
cqcn1991
Lol, w ogóle mi nie płacą. Używam kota intead, ale muszę go ręcznie
fomratować
1
Mam ten sam problem z @ cqcn1991
Nam G VU
1
Używanie DISPLAY=:0 xclipdziała również w celu wyczyszczenia schowka z zadania. W moim przypadku używam atdo wyczyszczenia schowka dwie minuty po skopiowaniu.
majgis
9

Spróbuj tego, a zadziała jak urok. Miałem ten sam błąd, ale takie podejście załatwiło sprawę:

ssh USER@REMOTE "cat file"|xclip -i
VaTo
źródło
8

Działa również dla mnie:

ssh <user>@<host>  "cat <filepath>"|pbcopy 
Dario
źródło
działa również przy użyciu pliku pem: ssh -i /path/myapp.pem <user> @ <host> "cat <filepath>" | pbcopy
alemol
4
Myślałem, że pbcopy to sprawa Maca, a nie Linuksa
Alexander Mills,
1

dodaj przez użytkownika root to polecenie: ssh user_to_acces @ nazwa_hosta -X

user_to_acces = nazwa_hosta_użytkownika = nazwa hosta maszyna

Fadid
źródło