Я подозреваю несоответствие между тем, где вы сгенерировали ключ и откуда вы пытаетесь его загрузить.
Когда вы запускаете команду 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
.