копирование открытого ключа ssh

Нет, в rsync нет возможности указать несколько пунктов назначения. Вам нужно будет вызвать команду несколько раз. Если у вас много целей, вы можете подумать об использовании вместо этого сетевой файловой системы - возможно, это лучше подходит для вашей проблемы.

0
29.07.2014, 22:39
2 ответа

Решение следующее.

1) На вашем терминале создайте массив со всеми хостами/IP-адресами, которые вы хотите скопировать id_rsa.pub. Например

hosts=( host1 host2 192.168.100.200 host4 )

2) Создайте ожидаемый файл, сохраните его и сделайте исполняемым, используя chmod +x имя файла

#!/usr/bin/expect -f

if { $argc != 4 } {
    puts stderr "usage: ./expt host pass user keyfile"
    exit 2
}

   set host [lindex $argv 0]
   set pass [lindex $argv 1]
   set user [lindex $argv 2]
   set keyfile [lindex $argv 3]

   spawn ssh-copy-id -i $keyfile $user@$host
   expect "assword:"
   send "$pass\n"
   expect eof

3) Теперь пройдите по массиву, который содержит ваши хосты и отправьте id_rsa.pub

for host in "${hosts[@]}" ; do ./expt "$host" Y0urPassword username ~/.ssh/id_rsa.pub ; done

Дождитесь, пока открытый ключ будет скопирован на все хосты.

2
28.01.2020, 02:37

Хорошо, наконец-то у меня есть это. Теперь работай идеально. В скрипт после цикла for добавляю эту строку:

/usr/bin/expect <<EOD

и conde ожидаемой процедуры типа:

spawn ssh-copy-id -i test.pub root@<name_host>
        expect "Enter passphrase for key"
        send "$pass\n"
        expect eof
EOD

и работает идеально!

Еще раз спасибо за объяснение и помощь val0x00ff

;)

0
28.01.2020, 02:37

Теги

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