Скопируйте ключ ssh на другой компьютер, чтобы я мог использовать там GitHub?

11

У меня есть удаленный сервер. Я уже могу ssh успешно на этот удаленный сервер - мой ключ находится в authorized_keys на удаленном сервере.

Теперь я хочу вытащить из GitHub непосредственно на этот удаленный сервер. Но я получаю permission denied (publickey) когда я пытаюсь ssh -T git@github.com на удаленном сервере.

Должен ли я скопировать id_rsa.pub непосредственно с моей локальной машины на удаленный сервер, или это опасно?

Если это ответ, каков наилучший способ сделать это?

Или я должен сгенерировать новый открытый ключ на удаленном сервере и добавить его в мой аккаунт github?

ОБНОВИТЬ:

Вот вывод из подробного SSH:

~$ ssh -Tv git@github.com
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication
Richard
источник
Я только что попытался настроить переадресацию агента ssh, используя IP-адрес моего сервера: developer.github.com/guides/using-ssh-agent-forwarding Но я все еще получаю Permission denied (publickey) на удаленной машине.
Richard
1
есть подробный параметр в команде ssh, я думаю, что он может сказать вам, какие ключевые файлы он на самом деле пытается, это помогло мне несколько раз.
Allman

Ответы:

4

id_rsa.pub может быть скопирован в любом месте без какой-либо реальной опасности для него. Это ваш открытый ключ, и он предназначен для таких вещей. Это половина пары ключей, и вы можете использовать ее в тех местах, к которым вам нужен доступ.

Чтобы разрешить удаленный вход, ваш открытый ключ должен быть указан в authorized_keys ( authorized_keys2 в некоторых системах). Один ключ в каждой строке в следующем формате:

ssh-rsa AAAIHAVEREMOVEDTHEMAJORITYOFTHEKEYBECAUSEISEENONEEDTOPOSTTHATWALLOFTEXTHERE9yfRjxw== jarmund@jarmint

Чтобы добиться этого, скопировав его, просто добавьте его в authorized_keys файл как это: cat id_rsa.pub >> ~/.ssh/authorized_keys

Большинство здравомыслящих систем трусливо откажутся разрешить вам использовать основанный на ключах логин, если .ssh папка имеет слишком свободные разрешения. Папка должна быть 700так что если у вас все еще есть проблемы chmod 700 ~/.ssh

Кроме того, файлы в .ssh папка должна быть 600: chmod 600 ~/.ssh


Изменить 1:

Сам файл, id_rsa.pub Не требуется сам на удаленном сервере. Только содержимое, как часть authorized_keys, Я рекомендую бежать ssh -vT git@github.com включить подробное ведение журнала, чтобы вы могли точно видеть, на какие разрешения он жалуется.

Изменить 2:

Это означает, что ни один из предложенных ключей не соответствовал тому, что удаленный сервер имел в файле. То, что вы хотите увидеть, выглядит примерно так:

debug1: Offering RSA public key: /home/jarmund/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535

Вещи, чтобы проверить:

  • Убедитесь, что один из закрытых ключей совпадает с открытым ключом, который вы добавили к удаленному authorized_keys
  • Убедитесь, что ключ соответствует имени пользователя, с которым вы пытаетесь войти (должно быть последней частью открытого ключа)
  • Попробуй переименовать authorized_keys в authorized_keys2
Jarmund
источник
Благодарю. Мой открытый ключ указан в ~/.ssh/authorized_keys на удаленном сервере - я добавил его с помощью cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys", Потом сшед в пульт и побежал ~$ chmod 700 ~/.ssh а также $ chmod 600 ~/.ssh/authorized_keys но все же получить Permission denied (publickey) когда я пытаюсь ssh к github. Должен ли я скопировать весь id_rsa.pub файл через удаленную машину тоже?
Richard
@Richard Тебе сам файл там не нужен, нет. Хотя мне нравится хранить его в папке .ssh на всякий случай, если мне это нужно. Но это не обязательно, это просто то, что я делаю. Я бы порекомендовал запустить ssh Команда, описанная в вашем вопросе с -v Переключитесь, чтобы точно узнать, на какие разрешения жалуется ssh.
Jarmund
Спасибо за редактирование 2. Я не уверен, как сделать первый пункт - check that one of the private keys... - что мне здесь делать?
Richard
Что касается пункта 2, значит, ключ должен совпадать с моим именем пользователя на GitHub? Это не похоже на это :)
Richard
Дело в том, что я могу использовать этот же открытый ключ для ssh и получать из GitHub с моей локальной машины просто отлично, поэтому GitHub должен думать, что все в порядке ...?
Richard
2
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication

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

ssh -i /path/to/some_key -Tv git@github.com
Kenster
источник
Файл ключа не существует на удаленном сервере, с которого я пытаюсь подключиться по ssh к github, но он находится в authorized_keys, Достаточно ли этого или мне нужно скопировать туда файл ключа?
Richard
authorized_keys для общественности ключи, которые будут приняты для входящий соединения. Вам нужна копия частный ключевой файл, чтобы сделать исходящий подключение к другому хосту. Так что да, один из этих ключевых файлов (id_rsa и т. Д.) Должен присутствовать на хосте, где вы запускаете ssh.
Kenster
Флаг -i помог мне решить проблему! Я скопировал папку ssh на другой компьютер и пытался использовать удаленный git, но был отклонен. Я спас день!
pauljohn32
1

Серверу нужен ваш закрытый ключ для аутентификации на Github. Ваш открытый ключ, как следует из его названия, считается открытым, поэтому его недостаточно для аутентификации.

Если вам не нужно использовать Github на удаленном сервере без подключения через ssh, вам следует использовать пересылку ssh-agent. Руководство для этого доступно на Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ ,

В противном случае вам следует сгенерировать новый ключ и связать его с вашей учетной записью.

user2313067
источник
0

Вы можете напрямую поставить команду.

$ cat ~ / .ssh / id_rsa.pub

если у вас уже есть ключ ssh, он покажет его. В противном случае это дает ошибку. Вам нужно добавить новый ключ.

Gauravsingh Patil
источник