Aqui está o que eu tentei e recebi um erro:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Aqui está o que eu tentei e recebi um erro:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Respostas:
O OpenSSH vem com um comando para fazer isso
ssh-copy-id
,. Você apenas fornece o endereço remoto e ele adiciona sua chave pública aoauthorized_keys
arquivo na máquina remota:Pode ser necessário usar o
-i
sinalizador para localizar sua chave pública na sua máquina local:fonte
>>
é tratado pelo seu shell e você está executando o comando através do SSH em vez de através de um shell. Sua correção de fazer com que o SSH execute um shell, que executa seu comando, deve funcionarssh-copy-id
não funcionará, certo?Você sempre pode fazer algo assim:
Não tenho certeza se você pode
cat
de uma máquina local para uma sessão ssh. Apenas mova-o para / tmp como sugerido.Edit: Isto é exatamente o que
ssh-copy-id
faz. Assim como Michael disse.fonte
cat
ou de outra forma). O que você está descrevendo é a maneira antiquada;ssh-copy-id
é recomendado porque há menos risco de erros de digitação ou concessão de permissões erradas aos arquivos.cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
.Esta resposta descreve como fazer com que a maneira pretendida mostrada na pergunta funcione.
Você pode executar um shell no computador remoto para interpretar o significado especial do
>>
operador de redirecionamento:O operador de redirecionamento
>>
é normalmente interpretado por um shell.Quando você executa
ssh host 'command >> file'
, não há garantia de quecommand >> file
será interpretado por um shell. No seu caso,command >> file
é executado em vez do shell sem interpretação especial e>>
foi dado ao comando como argumento - da mesma maneira que a execuçãocommand '>>' file
em um shell.Algumas versões do SSH (OpenSSH_5.9) invocam automaticamente o shell no servidor remoto e passam o (s) comando (s) a ele quando detectam tokens a serem interpretados por um shell como
;
>
>>
etc.fonte
openssh
fornecessh-copy-id
. A sequência seria:Gere uma chave 4k decente
Inicie seu ssh-agent e obtenha informações como
SSH_AGENT_PID
etc.Agora comece a carregar chaves no seu agente SSH
Verifique se está carregado
Isso mostrará o que você tem no agente ssh
Agora, na verdade, SSH para um sistema remoto
Agora você pode executar ssh-copy-id sem argumentos:
Isso cria
~/.ssh/authorized_keys
e preenche as informações básicas necessárias do ssh-agent.fonte
Eu tive problemas com ssh-copy-id ao escolher outra porta que não 22 ... então aqui está o meu oneliner com uma porta ssh diferente (por exemplo, 7572):
fonte
De fato, o
the ssh-copy-id
comando faz exatamente isso (doopenssh-client
pacote):Nota:
host
significa endereço IP ou domínio .Gostaria também de adicionar algumas informações adicionais a este
1) Podemos especificar uma porta diferente para SSH no servidor de destino:
Nota:
A porta deve estar na frente da
user@host
ou não será resolvida.Fonte
2) nós podemos especificar um arquivo com uma chave pública :
Nota:
A
-i
opção nos permite indicar o local apropriado do nome com o arquivo que contém a chave pública.Às vezes, pode ser útil, especialmente se a armazenarmos em um local fora do padrão ou se tivermos mais de uma chave pública em nosso computador e desejarmos apontar para uma específica.
fonte