Конфигурация ssh для нескольких учетных записей Bitbucket. Простой пример, но получение "удаленного конца неожиданно зависает"

Предположим, что мое имя пользователя bitbucket "jon", и у меня есть личные проекты в https://bitbucket.org/jon.

Предположим, что я присоединяюсь к команде разработчиков, у которой есть учетная запись bitbucket под названием "devteam", которую можно найти в https://bitbucket.org/devteam

Тогда предположим, что я настраиваю новую машину. Я генерирую пару ssh-ключей, id_rsa и id_rsa.pub, которые находятся в ~/.ssh. Затем мой руководитель группы разработчиков добавляет мой открытый id_rsa.pub ключ к учетной записи devteam на битбакете. Теперь я могу клонировать проекты с учетной записи devteam и работать.

Далее я хочу взаимодействовать со своей собственной учетной записью jon. Однако я не могу добавить ключ id_rsa.pub в свою учетную запись bitbucket, потому что битбакет говорит мне, что этот ключ уже добавлен в учетную запись. Это означает, что я должен создать вторую пару ключей. Поэтому я запускаю ssh-keygen -f ~/.ssh/jon -C "jon" в соответствии с инструкциями здесь: https://confluence.atlassian.com/pages/viewpage.action?pageId=271943168, а затем добавляю этот ключ jon.pub к моей учетной записи jon в битбакет.

Теперь, когда у меня есть две пары ключей, id_rsa и jon, я должен настроить, какой ключ будет использоваться, когда. Следуя инструкциям на странице справки bitbucket, связанной с выше, я создаю файл config в моем каталоге ~/.ssh со следующим содержимым:

Host devteam
 HostName bitbucket.org
 IdentityFile ~/.ssh/id_rsa
Host jon
 HostName bitbucket.org
 IdentityFile ~/.ssh/jon

Затем мне сообщают, что я могу сделать следующую подстановку: От [email protected]:jon/reponame.git до [email protected]:jon/reponame.git

Итак, я пытаюсь выполнить следующую команду: git clone [email protected]:jon/reponame.git, и я получаю следующую ошибку:

Initialized empty Git repository in /home/jon/dev/reponame/.git/
Bad owner or permissions on /home/jon/.ssh/config
fatal: The remote end hung up unexpectedly

Что я сделал не так?

Изменить: вот разрешения файлов в моем каталоге ~/.ssh:

[[email protected] ~/.ssh]
 1$ ls -alh
total 32K
drwx------.  2 jon 4.0K Jan 18 19:20 ./
drwx------. 11 jon 4.0K Jan 18 19:34 ../
-rw-rw-r--.  1 jon  132 Jan 18 19:20 config
-rw-------.  1 jon 1.8K Jan 18 15:21 id_rsa
-rw-r--r--.  1 jon  406 Jan 18 15:21 id_rsa.pub
-rw-------.  1 jon 1.7K Jan 18 18:45 jon
-rw-r--r--.  1 jon  390 Jan 18 18:45 jon.pub
-rw-r--r--.  1 jon  808 Jan 18 18:40 known_hosts

Ответ 1

У меня была та же проблема. После того как я изменил разрешения файла ~/.ssh/config на -rw-r--r--, ошибка

Bad owner or permissions on /home/username/.ssh/config
fatal: The remote end hung up unexpectedly

исчез.

Записать в консоль:

cd ~/.ssh
chmod 644 config

Ответ 2

Это касается файла RSA, который появляется в папке ../.ssh/, я исправил это, удалив любой поврежденный файл и затем сгенерировав его при установке GitHub.

Ответ 3

Эти команды должны устранить проблему:

chown $USER ~/.ssh/config
chmod 644 ~/.ssh/config

Префикс с sudo, если файлы принадлежат другому пользователю.

Если пострадали больше файлов, замените config на *.

В man ssh мы можем прочитать:

Из-за возможности злоупотребления, этот файл должен иметь строгие разрешения: читать/писать для пользователя, а не доступный для записи другими. Он может быть доступен для групп, если эта группа содержит только пользователя.