Самый простой способ настроить нового пользователя с SSH-доступом на удаленном хосте с правами root-доступа.

Я пишу учебное пособие по настройке Ceph трудным путем, полностью обшивая.

Меня не устраивает количество команд ssh, необходимых для подключения к удаленному хосту от имени пользователя root, создания нового пользователя, затем ключей scp ... Должен быть более умный и простой способ - особенно в Ubuntu.

Вот точная проблема: локальный пользователь FOO, имеющий доступ к удаленному серверу с пользователем ROOT, должен установить ключи (и, возможно, пользователя) также для пользователя CEPH. Повторите n раз с n удаленными хостами.

Какие-нибудь умные однострочники мне не хватает?

текущие шаги:

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
1
задан 9 May 2015 в 13:25

4 ответа

Поскольку это - Цифровой Океан, проблема может быть решена путем установки userdata как часть начальной облачной начальной загрузки экземпляра - следующее создаст ceph пользователя, поместит его в sudoers группу и настроит ключи SSH, требуемые обеспечить, входят в систему.

#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

я все еще полагаю, что должен быть умный способ сделать это не вовлечение облачной матрицы.

1
ответ дан 9 May 2015 в 13:25

Часть Вашей проблемы заключается в создании .ssh. Что я сделал бы использование использования ssh-keygen, который создаст его, если не будет существовать и полномочия набора правильно (и, конечно, создавать пару ключей для пользователя).

$ 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
'

Примечания:

  • использовать adduser вместо useradd - это создает скелетный корневой каталог, от /etc/skel.
  • --gecos "" и --disabled-password используются, чтобы не запрашивать. Если Вы не возражаете против подсказок для имени и пароля, Вы пропускаете эти опции.
  • ssh-keygen может создать .ssh с правильными полномочиями
  • Снова, -N "" и -f ~ceph/.ssh/id_rsa используются для предотвращения подсказок. Можно пропустить их, если Вы не возражаете против подсказок для ключевого объекта (для которого значение по умолчанию хорошо), и если Вы хотите установить пароль.
  • Ни один .ssh ни .ssh/authorized_keys потребность иметь 700 как режим. Пока только владелец может записать в них, это прекрасно (755 для .ssh и 644 для .ssh/authorized_keys очень хорошо).
1
ответ дан 9 May 2015 в 13:25

Я нашел более универсальное решение путем изменения ответа на этот вопрос для выполнения этого при входе в систему как другой пользователь:

 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"'
0
ответ дан 9 May 2015 в 23:25

Можно использовать ssh-copy-id для передачи ключа SSH к удаленному хосту.

Пример:

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.

Это автоматически создает каталоги (такой как .ssh) и устанавливает их на корректные полномочия.

0
ответ дан 9 May 2015 в 23:25

Другие вопросы по тегам:

Похожие вопросы: