A maneira mais simples de configurar um novo usuário com acesso SSH no host remoto, com acesso root

1

Estou escrevendo um tutorial sobre como configurar o Ceph da maneira mais difícil, shell todo o caminho.

Eu não estou feliz com o número de comandos ssh necessários para se conectar a um host remoto como root, criar um novo usuário e, em seguida, chaves scp ... deve haver uma maneira mais inteligente e mais simples - especialmente no Ubuntu. p>

Aqui está o problema exato: O usuário local FOO que tem acesso ao servidor remoto com o usuário ROOT precisa configurar chaves (e possivelmente o usuário também) para o usuário CEPH. Repita n vezes com n hosts remotos.

Quaisquer frases inteligentes que estou perdendo?

etapas atuais:

scp -i digitalocean id_rsa.pub storage-1:/root
ssh -i digitalocean storage-1
useradd ceph
mkdir ~ceph/.ssh
cat id_rsa.pub >> ~ceph/.ssh/authorized_keys
chmod 700 ~ceph/.ssh
chmod 600 ~ceph/.ssh/authorized_keys 
chown ceph:ceph ~ceph/.ssh/authorized_keys 
chown ceph:ceph ~ceph/.ssh/
rm id_rsa.pub
    
por 0xF2 03.04.2015 / 23:58

4 respostas

1

Como este é o Oceano Digital, o problema pode ser resolvido configurando userdata como parte da inicialização da instância inicial da nuvem - o seguinte criará um usuário ceph, o colocará no grupo sudoers e configurará as chaves SSH necessárias para fornecer log em.

#cloud-config
users:
  - name: ceph
    groups: sudo
    shell: /bin/bash
    sudo: ['ALL=(ALL) NOPASSWD:ALL']
    ssh-authorized-keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDf0q4PyG0doiBQYV7OlOxbRjle026hJPBWD+eKHWuVXIpAiQlSElEBqQn0pOqNJZ3IBCvSLnrdZTUph4czNC4885AArS9NkyM7lK27Oo8RV888jWc8hsx4CD2uNfkuHL+NI5xPB/QT3Um2Zi7GRkIwIgNPN5uqUtXvjgA+i1CS0Ku4ld8vndXvr504jV9BMQoZrXEST3YlriOb8Wf7hYqphVMpF3b+8df96Pxsj0+iZqayS9wFcL8ITPApHi0yVwS8TjxEtI3FDpCbf7Y/DmTGOv49+AWBkFhS2ZwwGTX65L61PDlTSAzL+rPFmHaQBHnsli8U9N6E4XHDEOjbSMRX f2@digitalocean

Eu ainda acredito que deve haver uma maneira inteligente de fazer isso, não envolvendo o cloud fabric.

    
por 0xF2 06.04.2015 / 00:10
1

Parte do seu problema está na criação de .ssh . O que eu usaria seria usar ssh-keygen , que irá criá-lo se não existir e definir permissões corretamente (e, claro, criar um par de chaves para o usuário).

$ scp -i digitalocean id_rsa.pub storage-1:/tmp
$ ssh digitalocean storage-1 '
adduser --gecos "" --disabled-password  ceph
echo | sudo -u ceph ssh-keygen  -N "" -f ~ceph/.ssh/id_rsa 
sudo -u cp /tmp/id_rsa.pub ~ceph/.ssh/authorized_keys
'

Notas:

  • use adduser em vez de useradd - ele cria um diretório inicial de esqueleto, em /etc/skel .
  • --gecos "" e --disabled-password são usados para evitar a solicitação. Se você não se importar com o nome e a senha, pulará essas opções.
  • ssh-keygen pode criar .ssh com as permissões certas
  • Novamente, -N "" e -f ~ceph/.ssh/id_rsa são usados para evitar prompts. Você pode ignorá-los se não se importar com o local da chave (para o qual o padrão é bom) e se deseja definir uma frase secreta.
  • Nem .ssh nem .ssh/authorized_keys precisam para ter 700 como o modo. Contanto que apenas o proprietário possa escrever para eles, tudo bem ( 755 para .ssh e 644 para .ssh/authorized_keys está ótimo).
por muru 06.04.2015 / 00:39
0

Encontrei uma solução mais genérica modificando a resposta para essa pergunta para realizar isso enquanto faz login como outro usuário:

 cat ~/.ssh/id_rsa.pub | ssh root@storage-1 'useradd ceph; umask 0077; mkdir -p ~ceph/.ssh; cat >> ~ceph/.ssh/authorized_keys && echo "Key copied"'
    
por 0xF2 03.04.2016 / 10:04
0

Você pode usar ssh-copy-id para transferir sua chave SSH para um host remoto.

Exemplo:

mallard@steamroller:~$ ssh-copy-id mallard@puter
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'mallard@puter'"
and check to make sure that only the key(s) you wanted were added.

Cria automaticamente diretórios (como .ssh ) e os configura para as permissões corretas.

    
por Matthew Smith 03.04.2016 / 10:06