Google Compute Engine - SSH lub RSYNC bez hasła

0

Mam kilka wystąpień Google Compute Engine (GCE). Mam kilka skryptów, które pobierają informacje (pliki dziennika itp.) Z tych instancji, oraz kilka innych, które wypychają pliki. Chciałbym zautomatyzować więcej z tego, ale za każdym razem, gdy łączę się z instancją silnika obliczeniowego, muszę wprowadzić hasło.

Jak skonfigurować rsync lub ssh, aby nie potrzebować hasła, lub alternatywnie, jak wprowadzić moje hasło do tych programów?

Zauważ, że to zostało pierwotnie opublikowane w SO, ale potem przeniesione tutaj.

szybowiec
źródło
2
Czy GCE jest jakoś wyjątkowa? Istnieje dość kilka istniejących stanowisk rozmawiają o hasła połączenie ssh z wykorzystaniem uwierzytelniania z kluczem publicznym.
grawity

Odpowiedzi:

1

GCE ssh wykorzystuje uwierzytelnianie za pomocą klucza publicznego, a nie hasła, więc masz następujące opcje:

  1. używać gcloud compute copy-fileszgodnie z opisem w tej odpowiedzi . Jest to prawdopodobnie łatwiejsze, ponieważ pozwoli ci symbolicznie określać nazwy projektów i hostów, ponieważ adresy IP mogą się zmieniać.

  2. użyj sftpzgodnie z opisem w tej odpowiedzi , a mianowicie:

    sftp -o IdentityFile ~/.ssh/google_compute_engine user@host
    
  3. użyj, sshale z pełną ścieżką do pliku klucza zarejestrowanego w GCE. To polecenie jest drukowane po uruchomieniu, gcloud compute ssh <instance>więc możesz po prostu skopiować i wkleić je i użyć później. Powinien przypominać następujące:

    ssh -i ~/.ssh/google_compute_engine \
        -o UserKnownHostsFile=/dev/null \
        -o CheckHostIP=no \
        -o StrictHostKeyChecking=no \
        USER@IP_ADDRESS
    

    Pamiętaj, że tutaj musisz użyć dokładnych adresów IP, więc zastanów się nad użyciem statycznych adresów IP lub DNS, aby utworzyć stałą nazwę dla możliwie różnych adresów IP (jeśli używasz dynamicznych adresów IP).

    Możesz przeczytać więcej w dokumentacji .

Misha Brukman
źródło