Невозможно скопировать ~ / .ssh / id_rsa.pub


119

Я слежу за созданием ключей 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говорит?
— Фред Фу

ничего. Я запускаю эту команду на сервере через ssh
— Майкл Пачеко

Ответы:


125

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

cat ~/.ssh/id_rsa.pub

получить ваш открытый ключ


11
Это должен быть ответ номер 1 для всех, кто пытается скопировать содержимое файла через ssh
— dval 01

23
За исключением случаев, когда вы пытаетесь скопировать длинный файл.
— Flavian Hautbois

26
@dval, я не согласен, что это должен быть ответ номер 1, потому что в вопросе упоминается xclipиспользование, а не просто отображение ключа SSH в bash с cat ~/.ssh/id_rsa.pub. Однако это помогает решить проблему, потому что вы можете скопировать значение, когда оно отображается.
— Nik Sumeiko

124
какие?! как это может решить проблему неработоспособности xclip?
— VaTo

26
На самом деле этот ответ крайне вводит в заблуждение.
— Хасан

78

Судя по дате этого вопроса, исходный плакат не использовал бы подсистему Windows для Linux . Но если это так, и вы получите ту же ошибку, работает следующая альтернатива:

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

Благодаря этой странице, указывающей на то, что Windows 'clip.exe (и вам нужно ввести ".exe") может быть запущен из оболочки bash.


8
вы также можете использовать трубы, cat ~/.ssh/id_rsa.pub | clip.eseпросто работает
— chriz 07

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

Это был слишком хороший ответ, чтобы не публиковать его здесь. Это от Жиля , другого пользователя из 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



10

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


Если вы не работаете в графическом сеансе X, вам необходимо передать команде $DISPLAYпеременную среды. Запускаем так:

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,

Я думаю так. Но я не знаком с убунту. Не могли бы вы дать мне совет?
— cqcn1991 09

Лол, мне вообще не платят. Я использую кошачий интеад, но мне нужно настроить его вручную
— cqcn1991 09

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
— алемол

4
Я думал, что pbcopy - это Mac, а не Linux
— Александр Миллс

1

добавьте пользователем root эту команду: ssh user_to_acces @ hostName -X

user_to_acces = user hostName = имя хоста машины

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.