Неможливо скопіювати ~ / .ssh / id_rsa.pub


118

Я слідкую за створенням SSH ключів , це говорить

sudo apt-get install xclip

Завантажує та встановлює xclip. Якщо у вас немає apt-get, вам може знадобитися інший інсталятор (наприклад yum)

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

Копіює вміст файлу id_rsa.pub у буфер обміну

Але після запуску xclip -sel clip < ~/.ssh/id_rsa.pubя отримую в Error: Can't open display: (null) чому проблема? Я гугла навколо, але нічого не знайшла


Що echo $DISPLAYговорить?
Фред Фоо

нічого. Я
Michael Pacheco

Відповіді:


123

DISPLAY=:0 xclip -sel clip < ~/.ssh/id_rsa.pubне працювало для мене ( ubuntu 14.04), але ви можете використовувати:

cat ~/.ssh/id_rsa.pub

щоб отримати ваш відкритий ключ


11
Це має бути відповідь номер 1 для всіх, хто намагається скопіювати вміст файлу через ssh
dval

23
За винятком випадків, коли ви намагаєтесь скопіювати довгий файл.
Флавіан Гатбуа

26
@dval, я не згоден, це буде відповідь номер 1, тому що в цьому питанні згадується xclipвикористання не просто відображення SSH-ключа в bash з cat ~/.ssh/id_rsa.pub. Однак це допомагає вирішити проблему, оскільки ви можете скопіювати значення, коли воно відображається.
Нік Сумейко

124
що?! як це може вирішити проблему того, що xclip не функціонує?
VaTo

26
Насправді ця відповідь є вкрай оманливою.
Hasan Can Saral

78

На основі дати цього питання оригінальний плакат не використовував би підсистему Windows для Linux . Але якщо ви є, і ви отримуєте ту ж помилку, працює наступна альтернатива:

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

Завдяки цій сторінці для вказівки Windows 'clip.exe (і ви повинні набрати ".exe") можна запустити з оболонки bash.


8
ви також можете використовувати труби cat ~/.ssh/id_rsa.pub | clip.eseпросто працює
chriz

2
@chriz Я думаю, ти маєш на увазі "exe" не "ese"?
Марк Стобер

3
о так, вибачте, що це була просто друкарська помилка cat ~/.ssh/id_rsa.pub | clip.exe. Дякуємо, що вказали на це.
chriz

1
@Moytaba CONTROL SHIFT V.
JoanComasFdz

1
і для тих , хто вважає за краще одну команду на всіх платформах: додати до вашої ~/.bashrcабо ~/.bash_profile: alias pbcopy="clip.exe". і завдяки @chriz за вказівку труба |працює чудово.
Діо Пхунг

37

Це було занадто хорошою відповіддю, щоб не публікувати його тут. Це від Gilles , іншого користувача з askubuntu :

Буфер обміну забезпечується сервером X . Неважливо, чи є сервер без голови чи ні, важливо, що ваш локальний графічний сеанс доступний для програм, що працюють на віддаленій машині. Завдяки прозорому дизайну мережі X це можливо.

Я припускаю, що ви підключаєтесь до віддаленого сервера з SSH з машини, на якій працює Linux. Переконайтеся, що переадресація X11 включена як у конфігурації клієнта, так і в конфігурації сервера. У конфігурації клієнта, ви повинні мати лінію ForwardX11 yesв ~/.ssh/configмати його за замовчуванням, або передати параметр -Xв sshкоманді тільки для цієї сесії. У конфігурації сервера, ви повинні мати лінію X11Forwarding yesв /etc/ssh/sshd_config(він присутній за замовчуванням в Ubuntu).

Щоб перевірити , чи включена перенаправлення X11, подивіться на значення DISPLAYзмінної середовища: echo $DISPLAY. Ви повинні побачити таке значення, як localhost:10(програми, запущені на віддаленій машині, повідомляються про підключення до дисплея, який працює на тій же машині, але це з'єднання дисплея насправді передається SSH на дисплей на стороні клієнта). Зауважте, що якщо DISPLAYйого не встановлено, це не буде використовувати його вручну: змінна середовище завжди встановлюється правильно, якщо пересилання перебуває на місці. Якщо вам потрібно , щоб діагностувати проблеми з'єднання SSH, передати параметр , -vvvщоб sshотримати детальний слід того , що відбувається.

Якщо ви підключаєтесь через якісь інші засоби, ви можете або не зможете досягти переадресації X11. Якщо ваш клієнт працює під керуванням Windows, PuTTY підтримує переадресацію X11; вам доведеться запустити X-сервер на машині Windows, наприклад Xming .

За Жиль з askubuntu


17

У випадку, якщо ви намагаєтесь використовувати xclip на віддаленому хості, просто додайте -X до своєї команди ssh

ssh user@host -X

Більш детальну інформацію можна знайти тут: https://askubuntu.com/a/305681


10

Прочитали документацію, яку ви зв'язали. Це абсолютно нерозумно! xclipце лише буфер обміну. Ви знайдете інші способи скопіювати вставити ключ ... (я впевнений)


Якщо ви не працюєте всередині графічного сеансу X, вам потрібно передати команду $DISPLAYvar середовища в команду. Виконайте це так:

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

Звичайно, :0залежить від дисплея, який ви використовуєте. Якщо у вас є типова настільна машина, швидше за все, так і є:0


8
Я отримую Error: Can't open display: :0. До речі, я отримую доступ до VPS через Git Bash. VPS - це ubuntu, локальна машина - windows7
cqcn1991

Я думаю так. Але я не знайомий з ubuntu. Не могли б ви дати мені поради?
cqcn1991

Лол, мені взагалі не платять. Я використовую cat intead, але мені потрібно розробити це вручну
cqcn1991

1
У мене те саме питання з @ cqcn1991
Nam G VU

1
Використання DISPLAY=:0 xclipтакож працює для очищення буфера обміну від роботи. У моєму випадку я використовую atдля очищення буфера обміну через дві хвилини після копіювання.
majgis

9

Спробуйте це, і це спрацює як шарм. У мене була така ж помилка, але такий підхід зробив для мене трюк:

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

8

Наступне також працює для мене:

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

також працює з використанням файлу pem: ssh -i /path/myapp.pem <user> @ <host> "cat <filepath>" | pbcopy
alemol

4
Я думав, що pbcopy - це mac річ, а не Linux
Олександр Міллз

1

додати користувачем root цю команду: ssh user_to_acces @ hostName -X

user_to_acces = користувач hostName = машина імені хоста

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.