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

4 ответа4

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
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
1

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

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

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

0

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

$ cat ~/.ssh/id_rsa.pub

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .