В прошлом месяце я получаю более недавний ноутбук на своем рабочем месте, и мне нужно было переустановить мое распространение, Манджаро , в теме. 💻 К счастью, у меня есть полуавтоматная процедура, чтобы быстро настроить себя, но была часть, которая не на самом деле не ударила аккорда во мне:
# Add my public key to the principal servers (one command at at a time) ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@SERVER_1 ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@SERVER_2 # ... ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@SERVER_22
Для тех, которые не знают полезного ssh-copy-id Команда это инструмент часть Openssh Это добавляет открытый ключ SSH на сервере в качестве авторизованного ключа. С этим вам не нужно вводить свой пароль каждый раз, когда вы входите в систему на этом сервере.
Но у него мало (и нормальный) недостаток: первый раз, когда вы подключаетесь к серверу, чтобы установить новый открытый ключ SSH, Вам нужно ввести свой пароль Отказ 🔑. С более чем 20 машинами, которые я хочу иметь возможность подключиться без подсказки моего пароля, я знал, что мне нужно будет ввести ту же времена, мой сложный пароль … И это было только минимально, так как я мог ошибиться … ❌
Итак, я решу пытаться добавить больше Автоматизация к той части моего сценария. Я посмотрел на интернет, но я не нашел идеального решения для меня. Поэтому я склеен некоторые ответы, и я пришел с программой Bash ниже:
#!/bin/bash # Script to automatically add our public key on a list of servers # to remove the pain from typing each time our password # when we want to access a server. # [manual] If you want to copy your key to only one server # ssh-copy-id -i ~/.ssh/id_rsa.pub SERVER # Definition of the servers SERVERS=( "benjaminrancourt.ca" "another-server.ca" ) # Make sure we have your password if [-z "$1"]; then echo "You must supply your password!" echo " ./ssh-copy-id-servers.sh 'PASSWORD'" exit fi # Export the password into an environment variable export SSHPASS=$1 # Iterate over all servers for SERVER in "${SERVERS[@]}" do # Echo the server name echo $SERVER # Copy our key the first time to allow sshpass -e ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no $USER@$SERVER || echo "FAILED" # Clean the .ssh folder ssh $USER@$SERVER 'rm -rf .ssh' # Add back our key, as we have remove the former authorized keys, along with the new one! sshpass -e ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no $USER@$SERVER || echo "FAILED" done
Чтобы удалить старые открытые ключи предыдущих установок, я также добавляю удаление .ssh папка на каждом сервере. Это может быть жестоким образом, но я уверен, что они не останавливаются! 💀
Взяв менее 30 минут, чтобы прийти к этому решению, я оцениваю, что сэкономлю, по крайней мере, такое же количество времени для себя на следующие пять лет. Мои инвестиции ускоряют быстрее, если другие люди на своем рабочем месте используют его! 🧹
Автоматизируя все больше своей процедуры в каждой переустановке, становится легче и проще! 🤖
Я бы хотел, чтобы этот скрипт помог вам!
Оригинал: «https://dev.to/ranb2002/automating-ssh-copy-id-2k15»