Aby przesłać zdalnie klucz za pomocą skryptu można wykorzystać język expect.
Idealnie nadaje się do oczekiwania na dane i wysłania ich w trybie terminala ssh.
1.Najpierw instalujemy go w systemie
sudo apt-get install expect
2. Tworzymy plik copy-key:
#!/usr/bin/expect -f
set host [lindex $argv 0];
set user [lindex $argv 1];
set password [lindex $argv 2];
spawn ssh-copy-id "$user@$host"
expect "password" {send "$password\r"}
expect "$ "
3. Teraz nadajemy uprawnienia do wykonywania skryptu w linux
chmod +x /copy-key
4. Uruchamiamy jak poniżej, gdzie nasz serwer do którego chcemy się dostać ma adres IP 192.168.0.4.
./copy-key 192.168.0.4 uzytkownik haslo