Không thể sao chép ~ / .ssh / id_rsa.pub


117

Tôi đang theo dõi trong Tạo khóa SSH , nó cho biết

sudo apt-get install xclip

Tải xuống và cài đặt xclip. Nếu không có apt-get, bạn có thể cần sử dụng một trình cài đặt khác (như yum)

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

Sao chép nội dung của tệp id_rsa.pub vào khay nhớ tạm của bạn

Nhưng sau khi chạy xclip -sel clip < ~/.ssh/id_rsa.pubtôi nhận được Error: Can't open display: (null) Vấn đề là gì? Tôi tìm kiếm xung quanh nhưng không tìm thấy gì về nó


Nói gì echo $DISPLAY?
Fred Foo

không có gì. Tôi đang chạy lệnh này trên máy chủ qua ssh
Michael Pacheco

Câu trả lời:


123

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pubkhông hiệu quả với tôi ( ubuntu 14.04), nhưng bạn có thể sử dụng:

cat ~/.ssh/id_rsa.pub

để lấy khóa công khai của bạn


11
Điều này sẽ là câu trả lời số 1 cho bất cứ ai đang cố gắng sao chép nội dung tập tin thông qua ssh
dval

23
Ngoại trừ khi bạn đang cố gắng sao chép một tệp dài.
Flavian Hautbois

26
@dval, tôi không đồng ý rằng nó sẽ là câu trả lời số 1, bởi vì câu hỏi đề cập đến xclipviệc sử dụng không chỉ hiển thị khóa SSH trong bash với cat ~/.ssh/id_rsa.pub. Tuy nhiên, điều này giúp giải quyết vấn đề, vì bạn có thể sao chép giá trị khi nó được hiển thị.
Nik Sumeiko

123
gì?! Làm thế nào điều này có thể giải quyết vấn đề xclip không hoạt động?
VaTo

26
Thực sự, câu trả lời này là vô cùng sai lầm.
Hasan Can Saral

78

Dựa trên ngày của câu hỏi này, người đăng ban đầu sẽ không sử dụng Hệ thống con của Windows cho Linux . Nhưng nếu đúng như vậy và bạn gặp phải lỗi tương tự, thì giải pháp thay thế sau sẽ hoạt động:

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

Cảm ơn trang này đã chỉ ra clip.exe của Windows (và bạn phải nhập ".exe") có thể chạy từ bash shell.


8
bạn cũng có thể sử dụng các đường ống cat ~/.ssh/id_rsa.pub | clip.esechỉ hoạt động
chriz

2
@chriz Tôi nghĩ ý bạn là "exe" chứ không phải "ese"?
Marc Stober

3
oh yeah, xin lỗi đó chỉ là lỗi đánh máy cat ~/.ssh/id_rsa.pub | clip.exe. Cảm ơn vì đã chỉ ra điều đó.
chriz

1
@Moytaba CONTROL SHIFT V.
JoanComasFdz

1
và cho những người ưa thích một lệnh duy nhất trên tất cả các nền tảng: thêm video này vào bạn ~/.bashrchoặc ~/.bash_profile: alias pbcopy="clip.exe". và cảm ơn @chriz vì đã chỉ ra đường ống |hoạt động tốt.
Dio Phung

37

Đây là một câu trả lời quá tốt để không đăng nó ở đây. Đó là từ Gilles , một người dùng khác từ askubuntu :

Clipboard được cung cấp bởi các máy chủ X . Không quan trọng là máy chủ không có đầu hay không, điều quan trọng là phiên đồ họa cục bộ của bạn có sẵn cho các chương trình chạy trên máy từ xa. Nhờ thiết kế mạng trong suốt của X, điều này có thể thực hiện được.

Tôi giả sử rằng bạn đang kết nối với máy chủ từ xa bằng SSH từ một máy chạy Linux. Đảm bảo rằng chuyển tiếp X11 được bật cả trong cấu hình máy khách và cấu hình máy chủ. Trong cấu hình khách hàng, bạn cần phải có dòng ForwardX11 yestrong ~/.ssh/configđể có nó theo mặc định, hoặc vượt qua các tùy chọn -Xđể các sshlệnh chỉ dành riêng cho phiên đó. Trong cấu hình máy chủ, bạn cần phải có dòng X11Forwarding yestrong /etc/ssh/sshd_config(nó hiện diện mặc định trên Ubuntu).

Để kiểm tra xem X11 chuyển tiếp được kích hoạt, nhìn vào giá trị của DISPLAYbiến môi trường: echo $DISPLAY. Bạn sẽ thấy một giá trị như localhost:10(các ứng dụng chạy trên máy từ xa được yêu cầu kết nối với màn hình đang chạy trên cùng một máy, nhưng kết nối màn hình đó trên thực tế được SSH chuyển tiếp đến màn hình phía máy khách của bạn). Lưu ý rằng nếu DISPLAYkhông được đặt, bạn không cần thiết đặt theo cách thủ công: biến môi trường luôn được đặt chính xác nếu tính năng chuyển tiếp được thực hiện. Nếu bạn cần để chẩn đoán các vấn đề kết nối SSH, vượt qua tùy chọn -vvvđể sshcó được một dấu vết chi tiết về những gì đang xảy ra.

Nếu bạn đang kết nối thông qua một số phương tiện khác, bạn có thể không đạt được chuyển tiếp X11. Nếu máy khách của bạn đang chạy Windows, PuTTY hỗ trợ chuyển tiếp X11; bạn sẽ phải chạy một máy chủ X trên máy Windows chẳng hạn như Xming .

Bởi Gilles từ askubuntu


17

Trong trường hợp bạn đang cố gắng sử dụng xclip trên máy chủ từ xa, chỉ cần thêm -X vào lệnh ssh của bạn

ssh user@host -X

Thông tin chi tiết hơn có thể được tìm thấy tại đây: https://askubuntu.com/a/305681


10

Đã đọc tài liệu bạn đã liên kết. Điều đó hoàn toàn ngớ ngẩn! xclipchỉ là một khay nhớ tạm. Bạn sẽ tìm thấy các cách khác để sao chép, dán khóa ... (Tôi chắc chắn)


Nếu bạn không làm việc từ bên trong một phiên đồ họa X, bạn cần chuyển $DISPLAYvar môi trường cho lệnh. Chạy nó như thế này:

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

Tất nhiên :0phụ thuộc vào màn hình bạn đang sử dụng. Nếu bạn có một máy tính để bàn thông thường, có khả năng là:0


7
Tôi hiểu Error: Can't open display: :0. Nhân tiện, tôi đang truy cập VPS thông qua Git Bash. VPS là ubuntu, máy tính cục bộ là windows7
cqcn1991

Tôi nghĩ vậy. Nhưng tôi không quen với ubuntu. Bạn có thể cho tôi một lời khuyên?
cqcn1991 09/09

Lol, tôi không được trả tiền đâu. Tôi sử dụng mèo intead, nhưng cần phải fomrat nó bằng tay
cqcn1991

1
Tôi có cùng vấn đề với @ cqcn1991
Nam G VU

1
Việc sử dụng DISPLAY=:0 xclipcũng có tác dụng xóa khay nhớ tạm khỏi công việc. Trong trường hợp của tôi, tôi đang sử dụng atđể xóa khay nhớ tạm hai phút sau khi sao chép.
majgis

9

Hãy thử điều này và nó sẽ hoạt động như một sự quyến rũ. Tôi cũng gặp lỗi tương tự nhưng cách tiếp cận này đã giải quyết được vấn đề cho tôi:

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

8

Những điều sau đây cũng đang làm việc cho tôi:

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

cũng hoạt động bằng cách sử dụng tệp pem: ssh -i /path/myapp.pem <user> @ <host> "cat <filepath>" | pbcopy
alemol

4
Tôi nghĩ pbcopy là một điều mac, không linux
Alexander Mills

1

thêm bởi người dùng root lệnh này: ssh user_to_acces @ hostName -X

user_to_acces = user hostName = hostname machine

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.