Eu suspeito de uma incompatibilidade entre o local onde você gerou a chave e de onde você está tentando carregá-la.
Quando você executa o comando sudo pbcopy <~/.ssh/id_rsa.pub
, o que está acontecendo é que você está executando o comando pbcopy
como root
(porque sudo
), mas o arquivo é carregado pelo seu prompt bash
atual sendo executado no seu usuário atual, portanto, o ~
resolve o diretório inicial do seu usuário atual.
Se você gerou a chave com ssh-keygen
, ela coloca a chave em ~
de seu usuário atual. Já que o seu usuário atual é, bem, você , tudo combina muito bem.
Se você gerou a chave com sudo ssh-keygen
, isso significa que ssh-keygen
foi como root
user , portanto, as chaves estão abaixo do diretório base root
( ~root/.ssh/id_rsa.pub
ou /root/.ssh/id_rsa.pub
por padrão).
Existem duas soluções possíveis aqui. Qual você escolhe depende do que você quer fazer:
-
Você pode gerar a chave para seu próprio usuário, com
ssh-keygen
sem osudo
. Isso permitirá que seu comando original funcione. -
Como alternativa, você pode manter a chave em
root
, mas isso significa que você deve carregá-la de root quando quiser usá-la. Para fazer isso com os operadores de redirecionamento de shell, você precisa executar todo o shell comoroot
, por exemplo,sudo sh -c 'pbcopy <~/.ssh/id_rsa.pub'
Qual solução é mais apropriada depende dos seus requisitos e do que você pretende fazer no futuro. Todo comando executado como sudo
verá a chave em root
, enquanto os comandos executados sem sudo
verão a chave em seu usuário atual. Por exemplo, se você executar ssh
, ele procurará uma chave em ~/.ssh
de seu usuário atual, enquanto sudo ssh
procurará uma chave em ~/.ssh
de root
.