Невозможно скопировать ~ / .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) чем проблема? Я погуглил, но ничего не нашел

cqcn1991
источник
Что echo $DISPLAYговорит?
Фред Фу
ничего. Я запускаю эту команду на сервере через ssh
Майкл Пачеко

Ответы:

125

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

cat ~/.ssh/id_rsa.pub

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

Jahdere
источник
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

Карлес Алколеа
источник
17

Если вы пытаетесь использовать xclip на удаленном хосте, просто добавьте -X к вашей команде ssh

ssh user@host -X

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

Петр Пшеничный
источник
10

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


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

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

Конечно, :0зависит от используемого вами дисплея. Если у вас обычный настольный компьютер, скорее всего, он:0

hek2mgl
источник
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
VaTo
источник
8

У меня также работает следующее:

ssh <user>@<host>  "cat <filepath>"|pbcopy 
Dario
источник
работает также с использованием файла 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 = имя хоста машины

Fadid
источник