Eu sei que posso fazer o seguinte para copiar uma chave SSH
ssh-copy-id [email protected]
mas quando implanto um novo servidor, preciso autorizar várias chaves SSH para ele.Existe alguma maneira de facilitar a autorização de múltiplas chaves SSH?
Responder1
Lendo a página de manual do ssh-copy-id
, parece que ele deve copiar todas as chaves do agente ssh que não são aceitas para login. Portanto, carregue todos os pares de chaves no ssh-agent usando ssh-add
e use ssh-copy-id
depois disso.
Se isso não funcionar, você pode tentar especificar as chaves para ssh-copy-id
:
for i in ~/.ssh/*.pub; do
ssh-copy-id -i $i user@host
done
Se isso ainda não funcionar para você, talvez dê uma olhada em algo como ansible:
# sshkeys.yml
---
- hosts: all
remote_user: foo
tasks:
- authorized_key:
user: foo
key: '{{lookup("file", item)}}'
with_items:
- id_rsa.pub
- id_rsa_alternate.pub
Use como:
ansible-playbook -i remote.host.com, -k sshkeys.yml
Não deixe de ler mais sobre o ansible se você decidir seguir esse caminho.
Responder2
INTRODUÇÃO
Dessa forma, supera o ID de cópia do ssh em quilômetros, pois você pode copiar as chaves para qualquer usuário, para um servidor ssh com qualquer porta, não apenas 22. ah, e você pode ter várias chaves em seu autorizado_keys.org que serão anexadas ao arquivo autorizado_keys no servidor. Certifique-se de queauthorized_keys.org tenha uma chave pública SSH por linha.
Há muitas maneiras de construir essas linhas ao seu gosto. Sugiro nunca esquecer este cat | ssh cat
método ou similar echo | ssh ssh cat
, pois são perfeitos para escrever em servidores remotos. cat SOMETHING | ssh SERVER "cat - > REMOTEFILE"
ou você pode usar echo assim, echo "SOMETHING" | ssh SERVER "cat - > REMOTEFILE"
esses são métodos perfeitos para ler algo localmente e depois escrevê-lo ou anexá-lo em outro servidor. Escreva assim cat - > REMOTEFILE
ou anexe assimcat - >> REMOTEFILE
AS RESPOSTAS
cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"
ou
cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"
Além disso, se você tiver a chave ssh (uma chave ssh):
cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"
ou
cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"
Isso deve ser suficiente para dar sentido a tudo.
MAIS INFORMAÇÕES
NOTA: Leia meus comentários abaixo sobre o fato de que você não está limitado a usar "root". Aqui você pode ver que todas as partes dele são modificáveis:
[input of ssh keys or keys (as long as new line sepearted)] | ssh -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"
BÔNUS:digamos que o servidor ssh não permite logins com senha e apenas permite chaves SSH, mas você deseja informá-lo sobre mais chaves.
[input of ssh keys or keys (as long as new line sepearted)] | ssh -i PRIVATE -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"
- [entrada de chaves ssh ou chaves (contanto que a nova linha seja separada)]: pode ser um gato de um arquivo com 1 ou mais chaves públicas, desde que sejam separadas por uma nova linha ou um eco de uma chave pública completa (ou muitas chaves públicas, novamente, desde que sejam separadas por novas linhas - você pode usar "echo -e 'line1\nline2'" para separar novas linhas com echo.)
- PRIVADO: se o seu servidor ssh permite apenas a entrada de uma determinada chave, porque ele possui apenas autenticação de chave ssh configurada e possui sua chave pública. em seguida, especifique a chave privada dessa chave pública
- USUÁRIO: o usuário ao qual você deseja se conectar e editar sua chave. Se você se conectar como root (exemplo:[e-mail protegido]), você pode adicionar às chaves de qualquer pessoa "cat - >> /home/anyuser/.ssh/authorized_keys" ou pode adicionar às chaves raízes "cat - >> /root/.ssh/autorized_keys" . No entanto, se você se conectar como usuário1, poderá alterar apenas as chaves do usuário1 "cat - >> /home/user1/.ssh/authorized_keys" ou mais simplesmente "cat - >> ~/.ssh/authorized_keys" (este último funciona para qualquer usuário).
- SERVIDOR: o servidor ao qual você deseja se conectar. Neste caso é server.com
- PORT: a porta do servidor SSH aceita no servidor. Geralmente é a porta 22. Observe que se for a porta 22, você pode deixar de fora "-p 22" como padrão.
- AUTHORIZEDKEY: esta é a localização das chaves_autorizadas. Abordei isso no ponto USER. Será "/root/.ssh/authorized_keys" ou "/home/user1/.ssh/authorized_keys" ou "~/.ssh/authorized_keys"