Невозможно скопировать ~ / .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.