Добавьте несколько ключей SSH к новому серверу

Я знаю, что могу сделать следующее для копирования ключа SSH

ssh-copy-id user@server.com

но когда я развертываю новый сервер, я должен авторизовать несколько ключей SSH к нему. Там должен так или иначе сделать жизнь легче для авторизации нескольких ключей SSH?

0
задан 25 May 2015 в 22:22
2 ответа

Читая man-страницу ssh-copy-id , кажется, что она должна скопировать все ключи от ssh-агента, которые не принимаются для входа. Итак, загрузите все пары ключей в ssh-agent с помощью ssh-add и после этого используйте ssh-copy-id.

Если это не сработает, попробуйте указать ключи для ssh-copy-id:

for i in ~/.ssh/*.pub; do
  ssh-copy-id -i $i user@host
done

Если это все еще не сработает, может быть, взгляните на что-нибудь вроде допустимого:

# sshkeys.yml
---
- hosts: all
  remote_user: foo
  tasks:
  - authorized_key:
      user: foo
      key: '{{lookup("file", item)}}'
    with_items:
    - id_rsa.pub
    - id_rsa_alternate.pub

Используйте вроде:

ansible-playbook -i remote.host.com, -k sshkeys.yml

Обязательно прочитайте больше о допустимом, если вы выберете этот маршрут.

.
0
ответ дан 5 December 2019 в 18:55

INTRO

Таким образом, вы можете скопировать ключи любому пользователю, для сервера ssh с любым портом, а не только 22. oh и u может иметь несколько ключей на вашем сайте authorized_keys.org, которые будут приложены к файлу authorized_keys на сервере. Убедитесь, что авторизованная_keys.org имеет один публичный ключ ssh на строку.

Существует много способов, которыми вы можете построить эти строки по своему усмотрению. Я советую никогда не забывать этот cat | ssh cat метод или аналогичный echo | ssh ssh cat метод, так как они идеально подходят для записи на удаленных серверах. cat SOMETHING | ssh СЕРВЕР "cat - > REMOTEFILE", или вы можете использовать эхо таким образом echo "SOMETHING". | ssh SERVER "cat - > REMOTEFILE" - это идеальные методы, чтобы прочитать что-то локально, а затем записать это или добавить на другой сервер. Напишите его как этот cat - > REMOTEFILE или добавьте его как этот cat - >> REMOTEFILE

THE ANSWERS

cat authorized_keys.org | ssh -p 22 root@server.com "cat - >> /root/.ssh/authorized_keys"

или

cat authorized_keys.org | ssh -p 22 root@server.com "cat - >> ~/.ssh/authorized_keys"

Также если у вас есть ключ ssh (одна клавиша ssh):

cat id_rsa.pub | ssh -p 22 root@server.com "cat - >> /root/.ssh/authorized_keys"

или

cat id_rsa.pub | ssh -p 22 anyuser@server.com "cat - >> ~/.ssh/authorized_keys"

Этого должно быть достаточно, чтобы разобраться во всем этом.

MORE INFO

NOTE: Прочитайте мои комментарии ниже о том, что вы не ограничиваетесь использованием "root". Здесь вы можете увидеть, что все его части могут быть изменены:

.

[ввод ключей ssh или ключей (если новая строка отделена)] | ssh -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"

BONUS: позволяет сказать, что сервер ssh не разрешает вводить пароли и разрешает только SSH-ключи, но вы хотите сообщить ему о большем количестве ключей[ов].

  • [ввод клавиш ssh или ключей (если новая строка отделена)] | ssh -i PRIVATE -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"
  • [ввод ключей ssh или ключей (пока новая строка отделена)]: это может быть кот файла с 1 или более открытыми ключами, пока они отделены новой строкой, или эхо полного открытого ключа (или многие открытые ключи, опять же, пока они отделены новой строкой - Вы можете использовать "echo -e 'line1\nline2'", чтобы отделять новые строки эхом).
  • PRIVATE: если Ваш ssh сервер впускает только определённый ключ, потому что у него настроен только ssh ключ auth и у него есть Ваш открытый ключ. тогда укажите закрытый ключ этого открытого ключа
  • USER: пользователя, к которому Вы хотите подключиться и отредактировать его ключ. Если вы подключаетесь как root (пример: root@server.com), вы можете добавить к ключам anyones "cat - >> /home/anyuser/.ssh/authorized_keys" или вы можете добавить к ключам root "cat - >> /root/.ssh/autorized_keys" . Однако, если вы подключаетесь как user1, то вы можете изменить только клавиши user1s "cat - >> /home/user1/.ssh/authorized_keys" или более просто "cat - >> ~/.ssh/authorized_keys" (эта последняя работает для любого пользователя).
  • SERVER: сервер, к которому вы хотите подключиться. В данном случае его server.com
  • PORT: принятый порт SSH сервера на сервере. Обычно это порт 22. Обратите внимание, если его порт 22, вы можете не указывать "-p 22" по умолчанию.
  • AUTHORIZEDKEY: это место расположения ключей authorized_keys. Я рассказал об этом в пункте USER. Это будет либо "/root/.ssh/authorized_keys", либо "/home/user1/.ssh/authorized_keys", либо "~/. ssh/authorized_keys"
-4
ответ дан 5 December 2019 в 18:55

Теги

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