Встановіть відкритий ключ через ssh-copy-id для інших користувачів


26

ssh-copy-idможна використовувати для встановлення відкритого ключа на віддаленій машині authorized_keys. Чи може ця команда застосовуватися для встановлення відкритих ключів інших користувачів, якщо у вас є sudoможливість?

Оновлення: і локальне, і віддалене використовують Ubuntu 12.04.

Оновлення 2: опис процедури створення нового облікового запису користувача та додавання відкритого ключа

  1. (віддалено) Створіть новий обліковий запис користувача та встановіть його лише для доступу до відкритого ключа користувача.
  2. (локальний) Створіть відкритий ключ для нового облікового запису користувача (ssh-keygen).
  3. Як правило, я створюю каталог та файл .ssh/authorized_keysна віддаленому сервері, потім копіюю та вставляю відкритий ключ, створений локально, до нового облікового запису користувача. Що я шукаю, це те, що якщо я можу використати ssh-copy-idдля встановлення цього новоствореного відкритого користувача ключ безпосередньо в ssh-каталог. Просто, щоб зберегти ще пару команд.

Відповіді:


12

Не та сама команда, але якщо у вас є sudo на віддаленому хості, ви можете використовувати ssh для віддаленого виконання необхідних кроків. Я використовую наступну команду для натискання клавіші ssh на кореневого користувача моєї малини:

cat ~/.ssh/id_rsa.pub | \
  ssh pi@192.168.1.25 \
  "sudo mkdir /root/.ssh; sudo tee -a /root/.ssh/authorized_keys"
  • коти мій бубонний ключ
  • труби його до ssh
  • ssh підключається до моєї малини як користувача ssh
  • на віддаленому використанні sudo для створення /root/.ssh
  • потім використовує sudo з "tee -a", щоб додати stdin (який містить ключ від першого кота) до /root/.ssh/authorized_keys

Просто складіть цей матеріал як сценарій, можливо, додайте трохи chmod / chown на віддаленій стороні, і у вас є те, що вам потрібно.


Красиво і дякую за розбиття команди.
Блейк Фредерік

1

Так :), якщо ви, наприклад, записуєтесь як ghost @ ubuntu і ви

ssh-copy-id root@host-ip

Що ви побачите, на хост-сервері в /root/.ssh/authorized_keysфайловому ключі, що закінчується на ghost@ubuntu.
Це означає, що користувач-привид скопіював свою пару ключів і більше не потрібно вводити пароль.
Я не впевнений, що він буде працювати з -u <username>прапором зараз, але ви завжди можете ввійти як інший користувач

su <user_name> 

а потім ssh-copy-id ...


1
Чи буде встановлений ключ /root/.ssh/authorized_keysзамість /home/ghost/.ssh/authorized_keys? Я щойно оновив процедуру, яку я зараз роблю, щоб встановити відкритий ключ для нового користувача. Просто шукаю кращого методу. Спасибі!
realguess

Ключ буде встановлений у будинку користувача, до якого ви підключаєтесь віддалено. Ви можете скористатися параметром -i ssh-copy-id, щоб вказати, який ключ потрібно скопіювати, але ви не можете скопіювати його в інший каталог із звичайним ssh-copy-id.
user2313067

ви можете вказати, якого користувача ви будете копіювати, якщо ви хочете увійти як root, ніж root ssh-copy-id @ host-ip, якщо ви хочете як ghost ніж ssh-copy-id ghost @ host-ip
mirkobrankovic

1
Система була створена для дозволу входу лише за допомогою відкритого ключа. Оскільки користувач ghostбув створений, користувачеві відкритий ключ не доступний. Ось чому спочатку потрібно встановити відкритий ключ для користувача, а потім ssh-copy-id ghost@host-ipбуде працювати. Але дякую, я думаю, що кілька додаткових команд на віддаленому сервері не будуть великою справою.
realguess

так, спочатку потрібно створити паб. ввести локальний і ніж ssh-copi-id на віддалений сервер
mirkobrankovic
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.