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


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


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.


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



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


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

8

Działa również dla mnie:

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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.