Instale a chave pública via ssh-copy-id para outros usuários

26

ssh-copy-idpode ser usado para instalar sua chave pública em uma máquina remota authorized_keys. O mesmo comando poderia ser usado para instalar as chaves públicas de outros usuários, se você tiver sudocapacidade?

Atualização: local e remota estão usando o Ubuntu 12.04.

Atualização 2: descrevendo o procedimento de criação de uma nova conta de usuário e adição de chave pública

  1. (remoto) Crie uma nova conta de usuário e defina-a apenas para acesso à chave pública do usuário.
  2. (local) Gere uma chave pública para a nova conta de usuário (ssh-keygen).
  3. Normalmente, eu faço é criar o diretório e o arquivo .ssh/authorized_keysno servidor remoto e copiar e colar a chave pública gerada localmente na conta do novo usuário. O que estou procurando é que, se eu puder usar ssh-copy-idpara instalar a chave pública desse usuário recém-criado diretamente no diretório ssh. Apenas para salvar mais alguns comandos.
adivinhar
fonte

Respostas:

12

Não é o mesmo comando, mas se você tiver sudo no host remoto, poderá usar o ssh para executar remotamente as etapas necessárias. Eu uso o seguinte comando para enviar minha chave ssh ao usuário root do meu raspberry:

cat ~/.ssh/id_rsa.pub | \
  ssh [email protected] \
  "sudo mkdir /root/.ssh; sudo tee -a /root/.ssh/authorized_keys"
  • gatos minha chave bublic
  • canaliza para ssh
  • ssh se conecta à minha framboesa como usuário ssh
  • no controle remoto usa o sudo para criar /root/.ssh
  • então usa sudo com "tee -a" para anexar stdin (que mantém a chave do primeiro gato) em /root/.ssh/authorized_keys

Basta juntar essas coisas como um script, talvez adicionar um pouco de chmod / chown no lado remoto e você tenha o que precisa.

Michael Wyraz
fonte
Linda e obrigada pela divisão de comandos.
Blake Frederick
1

Sim :), se você, por exemplo, estiver logado como ghost @ ubuntu e você

ssh-copy-id root@host-ip

Do que você verá, no servidor host, na /root/.ssh/authorized_keyschave do arquivo, terminando com ghost@ubuntu.
Isso significa que o usuário fantasma copiou seu par de chaves e não precisa mais digitar a senha.
Não tenho certeza de que funcionará com o -u <username>sinalizador agora, mas você sempre pode registrar como usuário diferente com

su <user_name> 

e depois ssh-copy-id ...

mirkobrankovic
fonte
1
A chave será instalada em /root/.ssh/authorized_keysvez de /home/ghost/.ssh/authorized_keys? Acabei de atualizar o procedimento que estou fazendo atualmente para instalar uma chave pública para um novo usuário. Apenas procurando um método melhor. Obrigado!
realguess
A chave será instalada na casa do usuário ao qual você está se conectando remotamente. Você pode usar a opção -i de ssh-copy-id para especificar qual chave deseja copiar, mas não pode copiá-la para outro diretório com o ssh-copy-id normal.
user2313067
você pode especificar como o usuário que você vai copiar a chave, se você quiser registrar como raiz de raiz ssh-copy-id @ host-ip, se você quiser como fantasma de ssh-copy-id fantasma @ host-ip
mirkobrankovic
1
O sistema foi configurado para permitir o login apenas por chave pública. Desde que o usuário ghostfoi criado recentemente, não há chave pública disponível para o usuário. É por isso que você precisa instalar a chave pública do usuário primeiro e depois ssh-copy-id ghost@host-iptrabalhará. Mas obrigado, acho que alguns comandos extras no servidor remoto não serão um grande problema.
realguess
sim, primeiro precisa gerar pub. localy chave e que ssh-Copi-id ao servidor remoto
mirkobrankovic