Во-первых, я пытаюсь использовать ключи rsa, потому что я использую скрипт для создания ключей RSA, но изначально мне нужно подключиться к удаленному компьютеру для передачи вновь созданного ключа аутентификации. Имея готовые ключи – это то, что я делаю, но мне хотелось бы получить более простой способ получить ключ от всех этих машин.
Итак, вот сделка: мне нужно подключиться к более 100 машинам и передать файл открытого ключа плюс установить разрешения и включить проверку подлинности ключа. Сейчас я могу сделать это в двух строках: одна команда scp для передачи и одна команда ssh для установки разрешений и повторной аутентификации ключа. Но так оно и есть, он запрашивает пароль дважды, для каждой машины. С более чем 100 машинами, нуждающимися в этих ключах, поэтому мне больше не нужно делать пароли, я не хочу вводить этот пароль 200 раз.
Мне нужно каким-то образом вставить пароль во время соединения, только один раз (ну дважды технически). Я надеялся на возможность сохранять пароль в переменной во время выполнения сценария, а затем выполняться с ним после того, как будут сделаны подключения, и открытый ключ будет передан всем этим машинам.
Мысли?
Редактировать: забыл упомянуть, я ничего не могу установить. Поэтому я не могу использовать ожидание.
Вам не нужно делать два подключения, чтобы делать то, что вы делаете. Предполагая, что ssh-copy-id
не будет работать для вас, вот что-то из сценария, который я написал давно (до того, как я узнал о ssh-copy-id), который делает это в одном ssh:
tar c $keys | ssh "$1" "set -e; cd \`mktemp -d\`; tar x; mkdir -p ~/.ssh; chmod go-w ~/.ssh; cat $keys >> ~/.ssh/authorized_keys; chmod go-w ~/.ssh/authorized_keys"
Да, это одна огромная линия. $keys
содержит имена всех открытых ключей (помните, что это старый скрипт):
keys='' for k in identity.pub id_rsa.pub id_dsa.pub; do [ -e ~/.ssh/$k ] && keys="$keys $k" done
Главное, что ssh – это двоично-безопасный транспорт, поэтому вы можете использовать его для передачи tar, чтобы получить ваши файлы в том же сеансе, что и ваш chmod, и т. Д.