Использование одного закрытого ключа SSH на нескольких компьютерах

23

У меня есть репозиторий Github, к которому я хочу получить доступ с двух разных компьютеров Linux.

Для первой машины я следовал инструкциям Github для генерации ключей SSH и добавил полученный открытый ключ в Github. Этот клиент работает нормально.

Для второго клиента я скопировал /home/{user}/.ssh/id_rsaфайл с первого клиента. Я подумал, что это все, что мне нужно сделать, но когда я пытаюсь подключиться, я получаю «Отказано в доступе (publickey)».

Что мне не хватает?

Ярина
источник

Ответы:

32

Один и тот же ключ SSH должен использоваться несколькими клиентами. У меня разные SSH-ключи для разных сетей, и они на самом деле хранятся на зашифрованном USB-накопителе, который я использую с нескольких разных компьютеров без проблем.

SSH очень требователен к разрешениям файлов, поэтому я сначала проверил бы все разрешения от /home/{user}самого id_rsaфайла до самого файла.

SSH на самом деле не заботится о разрешениях записи группы или мира, поэтому убедитесь, что у chmod go-wвас есть домашний каталог и ~/.sshкаталог для начинающих. Я также удостоверился бы, что они принадлежат вашему пользователю chown ${USER}:${USER}.

Для самого ключа SSH я chmod 600их ...

Если хотите, у меня есть дополнительная информация о том, как я управляю своими ключами SSH, в своем ответе на другой вопрос SSH.

Джереми Бауз
источник
3
Это были разрешения. Не надо выдавать повторений, но большое спасибо
Ярин
6

Если вы получаете отказ в разрешении со стороны Github, возможно, он не получает ваш скопированный файл ключа SSH, а скорее системную настройку. Простой способ обойти это - создать отличный ~/.ssh/configфайл и поместить в него следующее:

Host github.com
  Hostname      github.com
  User          git
  IdentityFile  ~/.ssh/yourkeyfile

Это заставит ваш SSH-клиент использовать этот ключ только для github.com.

Надеюсь это поможет.

vmfarms
источник
2
У меня нет репутации, чтобы высказаться, но спасибо
Ярин
1

Я знаю, что это старый, но думал, что я бы указал, что вам также нужно скопировать открытый ключ во второй клиент

(или пересчитать его с помощью ssh-keygen -y -f ~ / .ssh / id_rsa_ ..> ~ / .ssh / id_rsa ... pub)

От 1]:

  1. Метод аутентификации с открытым ключом: "publickey"

    Единственная ОБЯЗАТЕЛЬНАЯ аутентификация «имя метода» - это
    аутентификация «publickey» . Все реализации ДОЛЖНЫ поддерживать этот метод;
    однако не все пользователи должны иметь открытые ключи, и большинству локальных
    политик вряд ли потребуется аутентификация с открытым ключом для всех
    пользователей в ближайшем будущем.

    С этим методом владение личным ключом служит
    аутентификацией. Этот метод работает путем отправки подписи, созданной
    с помощью закрытого ключа пользователя. Сервер ДОЛЖЕН проверить, что ключ
    является действительным аутентификатором для пользователя, и ДОЛЖЕН проверить, что
    подпись действительна. Если оба держатся, запрос аутентификации ДОЛЖЕН быть
    принят; в противном случае он ДОЛЖЕН быть отклонен. Обратите внимание, что сервер МОЖЕТ
    потребовать дополнительные аутентификации после успешной аутентификации.

Ваш ssh-клиент начинает аутентификацию, отправляя открытый ключ (подпись, упомянутая жирным шрифтом выше) на сервер. Сервер, если открытый ключ является авторизованным ключом, отправляет случайный идентификатор сеанса обратно вашему клиенту. Затем ваш клиент кодирует этот идентификатор сеанса с помощью закрытого ключа и отправляет его обратно на сервер. Сервер декодирует этот идентификатор сеанса, используя открытый ключ, и, если он совпадает с исходным идентификатором сеанса, аутентифицирует вашего клиента.

[1] [ http://www.openssh.org/txt/rfc4252.txt][1]

Церковь Иакова
источник
0

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

радиус
источник
Я планировал создать по 1 ключевой паре на пользователя для нескольких клиентов каждого пользователя. Но мне кажется, что пара ключей для каждого клиента каждого пользователя выходит из-под контроля ...?
Ярин
Если вы используете один и тот же закрытый ключ для каждого пользователя на каждой машине, это выглядит нормально. Просто проверьте разрешение, если вы копируете, используя scp с флагом -p, все должно быть в порядке
радиус