~ / .Ssh / id_rsa.pub kann nicht kopiert werden

116

Ich folge in Generieren von SSH-Schlüsseln , heißt es

sudo apt-get installiere xclip

# Lädt xclip herunter und installiert es. Wenn Sie nicht haben apt-get, müssen Sie möglicherweise ein anderes Installationsprogramm verwenden (wie yum)

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

# Kopiert den Inhalt der Datei id_rsa.pub in Ihre Zwischenablage

Aber nachdem ich gelaufen xclip -sel clip < ~/.ssh/id_rsa.pubbin, bekomme ich Error: Can't open display: (null) Was ist das Problem? Ich googelte herum, fand aber nichts darüber

cqcn1991
quelle
Was echo $DISPLAYsagt das aus?
Fred Foo
nichts. Ich führe diesen Befehl auf einem Server über ssh aus
Michael Pacheco

Antworten:

124

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pubhat bei mir nicht funktioniert ( ubuntu 14.04), aber du kannst verwenden:

cat ~/.ssh/id_rsa.pub

um Ihren öffentlichen Schlüssel zu erhalten

Jahdere
quelle
11
Dies sollte die Antwort Nummer 1 für alle sein, die versuchen, Dateiinhalte über ssh
dval
23
Außer wenn Sie versuchen, eine lange Datei zu kopieren.
Flavian Hautbois
25
@dval, ich bin nicht der Meinung, dass dies die Antwort Nummer 1 sein soll, da in der Frage die xclipVerwendung erwähnt wird, bei der nicht nur der SSH-Schlüssel in einer Bash mit angezeigt wird cat ~/.ssh/id_rsa.pub. Dies hilft jedoch, das Problem zu lösen, da Sie den Wert kopieren können, wenn er angezeigt wird.
Nik Sumeiko
121
Was?! Wie kann dies das Problem lösen, dass xclip nicht funktioniert?
VaTo
26
Tatsächlich ist diese Antwort äußerst irreführend.
Hasan Can Saral
78

Basierend auf dem Datum dieser Frage hätte das Originalposter kein Windows-Subsystem für Linux verwendet . Wenn dies jedoch der Fall ist und Sie den gleichen Fehler erhalten, funktioniert die folgende Alternative:

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

Dank dieser Seite für den Hinweis auf Windows 'clip.exe (und Sie müssen die ".exe" eingeben) kann von der Bash-Shell ausgeführt werden.

Marc Stober
quelle
8
Sie können auch Pfeifen verwenden, cat ~/.ssh/id_rsa.pub | clip.esefunktioniert einfach
Chris
2
@chriz Ich denke du meinst "exe" nicht "ese"?
Marc Stober
3
Oh ja, tut mir leid, das war nur ein Tippfehler cat ~/.ssh/id_rsa.pub | clip.exe. Vielen Dank für den Hinweis.
Chris
1
@Moytaba CONTROL SHIFT V.
JoanComasFdz
1
und für diejenigen, die einen einzigen Befehl auf allen Plattformen bevorzugen: Fügen Sie diesen zu Ihrem ~/.bashrcoder hinzu ~/.bash_profile: alias pbcopy="clip.exe". und danke an @chriz für den Hinweis, dass Pipe gut |funktioniert.
Dio Phung
36

Dies war eine zu gute Antwort , um sie hier nicht zu posten. Es ist von einem Gilles , einem Mitbenutzer von askubuntu :

Die Zwischenablage wird vom X-Server bereitgestellt . Es spielt keine Rolle, ob der Server kopflos ist oder nicht. Entscheidend ist, dass Ihre lokale grafische Sitzung für Programme verfügbar ist, die auf dem Remotecomputer ausgeführt werden. Dank des netzwerktransparenten Designs von X ist dies möglich.

Ich gehe davon aus, dass Sie mit SSH von einem Computer unter Linux aus eine Verbindung zum Remote-Server herstellen. Stellen Sie sicher, dass die X11-Weiterleitung sowohl in der Clientkonfiguration als auch in der Serverkonfiguration aktiviert ist. In der Client - Konfiguration, müssen Sie die Linie haben , ForwardX11 yesin ~/.ssh/configsie standardmäßig an haben, oder die Möglichkeit , übergeben -Xan den sshnur für diese Sitzung Befehl. In der Serverkonfiguration, müssen Sie die Linie haben , X11Forwarding yesin /etc/ssh/sshd_config (es ist standardmäßig auf Ubuntu vorhanden ist).

Überprüfen Sie den Wert der DISPLAYUmgebungsvariablen , um zu überprüfen, ob die X11-Weiterleitung aktiviert ist : echo $DISPLAY. Sie sollten einen Wert wie sehen localhost:10(Anwendungen, die auf dem Remotecomputer ausgeführt werden, werden angewiesen, eine Verbindung zu einem Display herzustellen, das auf demselben Computer ausgeführt wird, aber diese Anzeigeverbindung wird tatsächlich von SSH an Ihr clientseitiges Display weitergeleitet). Beachten Sie, dass DISPLAYes nicht sinnvoll ist, es manuell einzustellen, wenn es nicht festgelegt ist: Die Umgebungsvariable wird immer korrekt festgelegt, wenn die Weiterleitung vorhanden ist. Wenn Sie SSH - Verbindung Probleme diagnostizieren müssen, übergeben Sie die Option -vvvauf ssheine detaillierte Spur zu bekommen , was passiert.

Wenn Sie eine Verbindung auf andere Weise herstellen, können Sie möglicherweise eine X11-Weiterleitung erreichen oder nicht. Wenn auf Ihrem Client Windows ausgeführt wird, unterstützt PuTTY die X11-Weiterleitung. Sie müssen einen X-Server auf dem Windows-Computer wie Xming ausführen .

Von Gilles aus Askubuntu

Carles Alcolea
quelle
17

Wenn Sie versuchen, xclip auf einem Remote-Host zu verwenden, fügen Sie einfach -X zu Ihrem ssh-Befehl hinzu

ssh user@host -X

Weitere Informationen finden Sie hier: https://askubuntu.com/a/305681

Peter Pshenichny
quelle
9

Haben Sie die von Ihnen verlinkte Dokumentation gelesen. Das ist total dumm! xclipist nur eine Zwischenablage. Sie werden andere Möglichkeiten finden, den Schlüssel zu kopieren und einzufügen ... (Ich bin sicher)


Wenn Sie nicht in einer grafischen X-Sitzung arbeiten, müssen Sie die $DISPLAYUmgebungsvariable an den Befehl übergeben. Führen Sie es so aus:

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

Dies :0hängt natürlich von der verwendeten Anzeige ab. Wenn Sie einen typischen Desktop-Computer haben, ist dies wahrscheinlich der Fall:0

hek2mgl
quelle
7
Ich verstehe Error: Can't open display: :0. Ich greife übrigens über Git Bash auf ein VPS zu. VPS ist Ubuntu, lokaler Computer ist Windows7
cqcn1991
Ich glaube schon. Aber ich kenne Ubuntu nicht. Könntest du mir ein paar Ratschläge geben?
cqcn1991
Lol, ich werde überhaupt nicht bezahlt. Ich benutze cat intead, muss es aber manuell
erstellen
1
Ich habe das gleiche Problem mit @ cqcn1991
Nam G VU
Vorschläge: (1) Verwenden Sie die rechte Maustaste zum Kopieren / Einfügen oder (2) Speichern in einer Datei und scp diese Datei auf Ihrem lokalen Computer
hek2mgl
9

Versuchen Sie dies und es wird wie ein Zauber funktionieren. Ich hatte den gleichen Fehler, aber dieser Ansatz hat den Trick für mich getan:

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

Folgendes funktioniert auch für mich:

ssh <user>@<host>  "cat <filepath>"|pbcopy 
Dario
quelle
funktioniert auch mit einer PEM-Datei: ssh -i /path/myapp.pem <Benutzer> @ <Host> "cat <Dateipfad>" | pbcopy
Alemol
4
Ich dachte, pbcopy sei eine Mac-Sache, nicht Linux
Alexander Mills
1

Fügen Sie nach Benutzer root diesen Befehl hinzu: ssh user_to_acces @ hostName -X

user_to_acces = user hostName = hostname machine

Fadid
quelle