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-keygensem 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 .