Скопіюйте ключ ssh на іншу машину, щоб я міг використовувати GitHub там?


12

У мене віддалений сервер. Я вже можу успішно 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

Я щойно спробував налаштувати переадресацію ssh-агента, використовуючи IP-адресу мого сервера: developer.github.com/guides/using-ssh-agent-forwarding, але я все ще перебуваю Permission denied (publickey)на віддаленій машині.
Річард

1
є команда sbo в команді 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

Дякую. Мій відкритий ключ вказаний ~/.ssh/authorized_keysна віддаленому сервері - я додав його за допомогою cat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys". Потім sshed на пульті дистанційного управління і бігала ~$ chmod 700 ~/.ssh і $ chmod 600 ~/.ssh/authorized_keysале все ще отримую , Permission denied (publickey)коли я намагаюся SSH до GitHub. Чи слід також копіювати весь id_rsa.pubфайл на віддалену машину?
Річард

@Richard Вам не потрібен сам файл, ні. Хоча я люблю зберігати його у папці .ssh на всякий випадок, якщо мені це потрібно. Але це не потрібно, це просто щось, що я роблю. Я рекомендую запустити sshкоманду, описану у вашому запитанні, за допомогою -vперемикача, щоб точно побачити, на які дозволи на ssh скаржиться.
Ярмунд

Дякую за редагування 2. Я не впевнений, як зробити перший пункт кулі - check that one of the private keys...- що мені тут робити?
Річард

У пункті 2, ти маєш на увазі, що ключ повинен відповідати моєму імені користувача GitHub? Це не схоже на це :)
Річард

Річ у тім, що я можу використовувати цей самий відкритий ключ, щоб сш іти та витягнути з GitHub з моєї локальної машини просто чудово, тож GitHub повинен думати, що це нормально ...?
Річард

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

Ключовий файл не існує на віддаленому сервері, з якого я намагаюся ssh на github, але він знаходиться в authorized_keys. Цього достатньо чи мені теж потрібно скопіювати файл ключів туди?
Річард

1
authorized_keysпризначений для відкритих ключів, які будуть прийняті для вхідних з'єднань. Для встановлення вихідного з'єднання з іншим хостом потрібна копія файлу приватного ключа . Отже, так, один з цих ключових файлів (id_rsa тощо) повинен бути присутнім на хості, де ви працюєте ssh.
Кенстер

Прапор -i допомог мені вирішити проблему! Я скопіював папку ssh на інший комп'ютер і намагався використовувати віддалений git, але був відхилений. -I врятував день!
pauljohn32

2

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

Якщо вам не потрібно використовувати Github на віддаленому сервері без підключення через ssh, вам слід скористатися переадресацією ssh-агента. Довідник по цьому доступний на Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ .

В іншому випадку слід створити новий ключ і зв’язати його зі своїм обліковим записом.


0

Ви можете безпосередньо поставити команду.

$ cat ~ / .ssh / id_rsa.pub

якщо у вас вже є ключ ssh, він покаже його. Інакше це дає помилку. Вам потрібно додати новий ключ.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.