Я знаю, что могу сделать следующее для копирования ключа SSH
ssh-copy-id user@server.com
но когда я развертываю новый сервер, я должен авторизовать несколько ключей SSH к нему. Там должен так или иначе сделать жизнь легче для авторизации нескольких ключей SSH?
Читая 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
Обязательно прочитайте больше о допустимом, если вы выберете этот маршрут.
.Таким образом, вы можете скопировать ключи любому пользователю, для сервера 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
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"
Этого должно быть достаточно, чтобы разобраться во всем этом.
NOTE: Прочитайте мои комментарии ниже о том, что вы не ограничиваетесь использованием "root". Здесь вы можете увидеть, что все его части могут быть изменены:
.[ввод ключей ssh или ключей (если новая строка отделена)] | ssh -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"
BONUS: позволяет сказать, что сервер ssh не разрешает вводить пароли и разрешает только SSH-ключи, но вы хотите сообщить ему о большем количестве ключей[ов].
[ввод клавиш ssh или ключей (если новая строка отделена)] | ssh -i PRIVATE -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"