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.pub
na 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
ssh
praticamente 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
~/.ssh
e, graças à opção-p
, não gerará erro se o diretório existir. - Com o operador
&&
, você executará o seguintecat
apenas se omkdir
anterior sair sem erros. - O último
cat >> ~/.ssh/authorized_keys
é uma invocação decat
sem arquivo . Sua saída será anexada (se possível) ao arquivo~/.ssh/authorized_keys
graças ao operador de redirecionamento (>>
).
- Você criará o diretório
Notas:
-
Em muitos sistemas, existe o comando
ssh-copy-id
para copiar as chaves locais na máquina remota. Para mais informações, digiteman ssh-copy-id
ssh-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
.