Estou tentando enviar o arquivo id_rsa.pub público do meu Mac para o diretório ~/.ssh/authorized_keys em meu diretório pessoal nos servidores Linux para que eu possa acessar sem fazer login todas as vezes.
No meu Mac Terminal, estou usando este comando:
cat ~/.ssh/id_rsa.pub | ssh username@remoteserver 'cat >> ~/.ssh/authorized_keys'
Isso funciona se o diretório remoto ~/.ssh já existir, mas não existe caso contrário. Nesse caso, primeiro preciso fazer login no servidor remoto, criar o diretório .ssh, fazer logout e executar o comando acima. Depois disso, posso ssh para o servidor remoto sem fazer login.
Eu preciso fazer isso para algumas dezenas de servidores, então eu queria saber se havia uma maneira de modificar o comando acima para criar o diretório .ssh remoto se ele ainda não estivesse presente.
Obrigado,
doug
Usar
ssh-copy-id
Em geral
ssh-copy-id
cuida de diretório ou arquivo inexistente. Use-o se puder ; não reinvente a roda.Sem
ssh-copy-id
(por qualquer motivo)No lado remoto, você executa comandos em um shell. Execute mais comandos. Certifique-se de que os comandos extras não consumam stdin antes
cat
(use</dev/null
se necessário). Aquicd
nemmkdir
usa stdin, então isso deve funcionar:Notas:
-p
mkdir
não reclama se já./.ssh
existe como diretório.-m 700
define o modo certo desde o início.O código pode ser melhorado. Meu ponto principal é que você não está limitado a um único arquivo
cat
.