Установите открытый ключ через 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. Просто чтобы сохранить еще пару команд.
realguess
источник

Ответы:

12

Не та же команда, но если у вас есть sudo на удаленном хосте, вы можете использовать ssh для удаленного выполнения необходимых шагов. Я использую следующую команду, чтобы передать мой ключ ssh пользователю root моего raspberry:

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 ...

mirkobrankovic
источник
1
Ключ будет установлен /root/.ssh/authorized_keysвместо /home/ghost/.ssh/authorized_keys? Я только что обновил процедуру, которую делаю сейчас, чтобы установить открытый ключ для нового пользователя. Просто ищу лучший метод. Благодарность!
реальность
Ключ будет установлен в доме пользователя, к которому вы подключаетесь удаленно. Вы можете использовать опцию -i ssh-copy-id, чтобы указать, какой ключ вы хотите скопировать, но вы не можете скопировать его в другой каталог с обычным ssh-copy-id.
user2313067
вы можете указать, от какого пользователя вы будете копировать ключ, если вы хотите войти в систему как root, а не в ssh-copy-id root @ host-ip, если вы хотите использовать в качестве ghost, чем ssh-copy-id ghost @ host-ip
mirkobrankovic
1
Система была настроена на разрешение входа только по открытому ключу. Поскольку пользователь ghostбыл недавно создан, для него нет открытого ключа. Вот почему нужно сначала установить открытый ключ для пользователя, затем ssh-copy-id ghost@host-ipбудет работать. Но спасибо, я думаю, что несколько дополнительных команд на удаленном сервере не будут иметь большого значения.
реальность
да, сначала нужно сгенерировать паб. Локальный ключ, а затем ssh-copi-id для удаленного сервера
mirkobrankovic