O comando cat é capaz de concatenar arquivos e imprimi-los na saída padrão.
Quando é invocado sem especificar nenhum arquivo ou com - , ele lê a entrada padrão.
Em seu comando é usado nas duas maneiras.
Passo a passo:
- A primeira parte do seu comando (
cat ~/.ssh/id_rsa.pub) faz exatamente o que você entendeu: ele imprime o arquivo local~/.ssh/id_rsa.pubna saída padrão. - Em seguida, com o símbolo
|, você redireciona a saída padrão local como entrada padrão para o comando a seguir (ssh). - O comando
sshpraticamente fará executar o comando dentro da string""na máquina remota passando a entrada padrão do pipe. - Dentro da string:
- Você criará o diretório
~/.sshe, graças à opção-p, não gerará erro se o diretório existir. - Com o operador
&&, você executará o seguintecatapenas se omkdiranterior sair sem erros. - O último
cat >> ~/.ssh/authorized_keysé uma invocação decatsem arquivo . Sua saída será anexada (se possível) ao arquivo~/.ssh/authorized_keysgraças ao operador de redirecionamento (>>).
- Você criará o diretório
Notas:
-
Em muitos sistemas, existe o comando
ssh-copy-idpara copiar as chaves locais na máquina remota. Para mais informações, digiteman ssh-copy-idssh-copy-id — use locally available keys to authorise logins on a remote machine
-
Como afirmado por roalma no comentário, a linha de comando original pode funcionar ou não dependendo das configurações (restritivas) da configuração
ssh.