Как создать ключ SSH для другого пользователя? - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь клонировать сервер gerrit, используя другого пользователя username2, но с Permission denied (publickey) он не работает.Я попытался сгенерировать ключ ssh, следуя совету Вопрос о сбое сервера «Как создать ключ ssh для другого пользователя?»

Следующие шаги не сработали.Чего мне не хватает?

  • ssh-keygen -f ~/.ssh/username2
  • cp ~/.ssh/username2.pub ~/.ssh/authorized_keys
  • Добавлен username2.pub к tech-gerrit.sd.company.com
  • ~ / .ssh / config
      Host tech-gerrit.sd.company.com
      HostName tech-gerrit.sd.company.com
      Port 29418
      User username2
      IdentityFile /Users/username1/.ssh/username2
    
  • Пытался клонировать, используя приведенную ниже команду
    git clone ssh://username2@tech-gerrit.sd.company.com:29418
    
  • Вы вошли как username2 в gerrit и добавили username2.pub к

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

Обычно Git SCM предназначен для использования git в качестве пользователя для клонирования SSH. Все открытые ключи пользователей в SCM передаются этому пользователю. Поэтому не должно иметь значения, какого пользователя вы пытаетесь клонировать, если в SCM есть закрытый ключ, соответствующий открытому ключу.

Вы можете проверить, работает ли ключ, запустив ssh git@tech-gerrit.sd.company.com:29418, и это должно вывести на экран приветствие, адресованное пользователю с соответствующим секретным ключом

И.Е .: Для меня с GitHub

➜  ~ ssh -T git@github.com
Hi praveenprem! You've successfully authenticated, but GitHub does not provide shell access.

GitLab

➜  ~ ssh -T git@gitlab.com
Welcome to GitLab, @prav!
➜  ~

BitBucket

➜  ~ ssh -T git@bitbucket.org
logged in as pravd.

You can use git or hg to connect to Bitbucket. Shell access is disabled.
➜  ~

Как видите, все основные паровые SCM-системы используют одного и того же пользователя для SSH, то есть git@.

Единственное время, когда вам нужно будет использовать имя пользователя, - это когда вы клонируете репо по HTTP / HTTPS. В этом случае вы обычно используете username@.

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

Также не забудьте загрузить секретный ключ агенту.

Запустите ssh-add -l, и если вы получите The agent has no identities. Попробуйте добавить ключ с помощью ssh-add.

0 голосов
/ 12 ноября 2018
IdentityFile /Users/username1/.ssh/username2.pub

Возможно, это не единственная проблема, но вы, возможно, указываете здесь не тот файл.Файл ключа с расширением .pub содержит открытую часть ключа.Соответствующий файл без .pub содержит закрытую часть ключа.Директива IdentityFile ожидает имя файла закрытого ключа, а не файл открытого ключа.Попробуйте изменить эту директиву на:

IdentityFile /Users/username1/.ssh/username2
                                            ^-- note no ".pub"

и посмотрите, все ли работает лучше.

0 голосов
/ 10 ноября 2018

Было бы лучше перечислить точные команды, которые вы использовали, чтобы мы могли также искать опечатки и знать, какой из ответов в вопросе 323958 вы следовали. Также было бы полезно узнать о программном обеспечении и конфигурации, используемых на company.com.

Некоторые вещи попробовать:

  • GitHub и GitLab настроены на использование git в качестве имени пользователя. Возможно, company.com также делает это. Попробуйте заменить username2 на git в вашей команде git clone.
  • Убедитесь, что вы используете ключ RSA, указанный на веб-сайте Gerrit - ssh-keygen -t rsa -f ~/.ssh/username2
  • Строка Host в ~ / .ssh / config должна соответствовать имени, используемому в командной строке, поэтому Host tech-gerrit.sd.company.com - иначе git и ssh не будут использовать вашу запись в ~ / .ssh / config вообще.
  • прочитайте Gerrit ssh документацию снова
...