Добавить ssh pubkey в authorized_keys на локальном хосте (пропуская существующие)

[112687] Насколько мне известно, нет, такой команды не существует (по крайней мере: портативная команда, которая делает то, что вы хотите). [12188]Это было бы довольно тривиально, чтобы реализовать это, хотя что-то похожее:[12189]Этот фрагмент (непроверенный, однако) должен создать вам временную директорию, и настроить его на removel, как только ваш сценарий заканчивается (что то, что ловушка делает). [12190]Мы запускаем cd и команду внутри подоболочки, что означает, что когда подоболочка выходит, вы должны вернуться туда, где вы начали, скрипт выйдет, и ловушка ляжет, чтобы очиститься.[112694]
1
02.09.2015, 12:50
3 ответа
PUBKEY=$(cat ~/.ssh/id_rsa.pub); grep -q "$PUBKEY"  ~/.ssh/authorized_keys || echo "$PUBKEY" >> ~/.ssh/authorized_keys

Этот один лайнер проверяет, присутствует ли уже пабки в файле authorized_keys, и добавляет его в конец файла, если его нет.

~/.ssh/id_rsa.pub вот путь к добавляемому пабки

~/. ssh/authorized_keys здесь путь к целевому файлу authorized_keys (~ символ обозначает ``

Для удалённого хоста можно использовать ssh-copy-id

4
27.01.2020, 23:14

Возможно, вы захотите пропустить идею возиться с ~/.ssh/authorized_keys и просто использовать функцию SSH CA, как описано, например, здесь: https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu (прокрутите вниз до "How To Configure User Keys").

Прелесть этого в том, что вы настраиваете свой контейнер один раз (добавляя TrustedUserCAKeys /etc/ssh/users_ca.pub, где users_ca.pub содержит открытую часть ключа CA, сгенерированного на вашей локальной машине) и с этого момента, если вы хотите предоставить доступ к контейнеру любому ключу, вы просто подписываете открытую часть этого ключа своим закрытым ключом CA и указываете, какие учетные записи разрешены для ключа, который вы подписываете. Работает как по волшебству :)

2
27.01.2020, 23:14

Предполагая, что открытый ключ находится в ~/.ssh/id_rsa.pub, вы можете безоговорочно добавить его в файл ~/.ssh/authorized_keysи использовать sort -uв этом файле для удаления дубликатов:

# Make sure that the file exists and has the correct permissions
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Add new key, removing duplicates.
sort -u -o ~/.ssh/authorized_keys ~/.ssh/authorized_keys ~/.ssh/id_rsa.pub
0
22.08.2021, 14:40

Теги

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