Я пишу учебное пособие по настройке Ceph на жесткий путь, оболочка полностью.
Я недоволен количеством команд ssh, которые требуется для подключения к удаленному хосту с правами root, create новый пользователь, а затем клавиши 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
Часть вашей проблемы заключается в создании .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 просто отлично).Я нашел более общее решение, изменив ответ на этот вопрос, чтобы выполнить это, войдя в систему как другой пользователь:
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"'
Вы можете использовать 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) и устанавливает правильные разрешения.