Próbuję skopiować plik .ssh / id_rsa.pub z naszego serwera centralnego na wiele serwerów. Mam następujący skrypt, którego zwykle używam do wypychania zmian na różne serwery.
#!/bin/bash
for ip in $(<IPs); do
# Tell the remote server to start bash, but since its
# standard input is not a TTY it will start bash in
# noninteractive mode.
ssh -q "$ip" bash <<-'EOF'
EOF
done
Ale w tym przypadku muszę przechwycić klucz publiczny na serwerze lokalnym, a następnie dodać go do wielu serwerów. Czy istnieje sposób, używając powyższego skryptu dokumentu, aby wykonać następujące czynności.
cat .ssh/id_rsa.pub |ssh tony@0.0.0.0 'cat > .ssh/authorized_keys'
shell-script
ssh
użytkownik67186
źródło
źródło
Odpowiedzi:
Dzięki tej prostej pętli możesz ją zautomatyzować i przenieść na wszystkie zdalne serwery.
źródło
Oto mój prosty skrypt do skopiowania ssh-keygen na wiele serwerów bez pytania o hasło za każdym razem.
źródło
Akceptowana odpowiedź nie zadziała, jeśli trzeba umieścić klucz publiczny innej osoby na wielu komputerach. Wymyśliłem następujące rozwiązanie:
cat add-vassal-tc-agents.sh
Ten skrypt dodaje nowy klucz do użytkowników na liście komputerów, pod warunkiem, że ma dostęp do środowiska, w którym jest uruchamiany.
Przykład
tc-agents-list.txt
:źródło
Aby skopiować klucz publiczny, masz coś wbudowanego w openssh. Zamiast tego
cat
issh
użyj tego: -źródło
Możesz to zrobić za pomocą prostej pętli while i listy serwerów osadzonych w następujący sposób:
Posiadanie listy w skrypcie eliminuje oddzielne pliki danych, które mogą zostać zgubione.
źródło
ssh-copy-id
zostało już zasugerowane w kilku innych odpowiedziach.Zakładając, że masz plik z listą adresów IP serwerów, nazwa SERWER i tylko adresy IP serwerów są zdefiniowane.
To dla pętli również będzie działać.
źródło