Intereting Posts
Я не могу понять, что делает параметр -c в команде tr в Ubuntu GNU / Linux, хотя я читаю руководство Скопируйте файлы из каталога, если имя присутствует в текстовом файле filename с новой строкой в ​​списке каталогов Netrw vim Чтение данных из канала в течение определенного времени (в секундах) Как перезаписать файлы-мишени с помощью mv? Linux для Linux USB-накопителя? Использование apprarmor / grsec для получения возможностей для файла TCPDump для захвата Datagram Tracepath6 Как отключить автоматическое копирование выделения? Как ограничить один пользовательский файл другим пользователем FreeBSD 9 KDE4 Нет мыши или клавиатуры на экране входа в KDE Запретить / разрешить доступ пользователя к порту динамически Разделить входной файл на X частей общего количества строк / X Насколько сложна программа, написанная в чистом Bash? Как я могу выполнить двоичный поиск текстового файла для определенной строки символов?

Команда SCP и / или SSH с паролем в строке

Во-первых, я пытаюсь использовать ключи 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, и т. Д.