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