1

Я сгенерировал ключ ssh только сейчас, и после этого я пытался скопировать id_rsa.pub, но он выдает ошибку о том, что каталог не существует. Кто-нибудь может мне помочь?

user$ sudo pbcopy <~/.ssh/id_rsa.pub
-bash: /Users/user/.ssh/id_rsa.pub: No such file or directory

1 ответ1

1

Я подозреваю несоответствие между тем, где вы сгенерировали ключ и откуда вы пытаетесь его загрузить.

Когда вы запускаете команду sudo pbcopy <~/.ssh/id_rsa.pub , происходит то, что вы запускаете команду pbcopy от имени пользователя root (потому что sudo), но файл загружается вашей текущей подсказкой bash запущенной под вашим текущим пользователем, поэтому ~ преобразуется в домашний каталог вашего текущего пользователя.

Если вы сгенерировали ключ с помощью ssh-keygen , он помещает ключ в ~ вашего текущего пользователя. Поскольку ваш текущий пользователь, ну, вы , все соответствует просто отлично.

Если вы сгенерировали ключ с sudo ssh-keygen это означает , что ssh-keygen побежал в качестве root пользователя, так что ключи фактически под root «s домашней директории ~root/.ssh/id_rsa.pub или /root/.ssh/id_rsa.pub по умолчанию).

Здесь есть два возможных решения. Какой из них вы выберете, зависит от того, что вы хотите сделать:

  • Вы можете сгенерировать ключ для своего пользователя с помощью ssh-keygen без sudo . Это позволит вашей оригинальной команде работать.

  • Кроме того, вы можете держать ключ под root , но это означает, что вы должны загрузить его из root, когда хотите его использовать. Чтобы сделать это с помощью операторов перенаправления оболочки, вам нужно запустить всю оболочку от имени пользователя root , например sudo sh -c 'pbcopy <~/.ssh/id_rsa.pub'

Какое решение больше подходит, зависит от ваших требований и от того, что вы собираетесь делать в будущем. Каждая команда, которую вы запускаете как sudo будет видеть ключ под root , в то время как команды, которые вы запускаете без sudo будут видеть ключ под вашим текущим пользователем. Например, если вы запустите ssh он будет искать ключ в ~/.ssh вашего текущего пользователя, в то время как sudo ssh будет искать ключ в ~/.ssh root .

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