Muszę robić okresowe kopie zapasowe katalogu na zdalnym serwerze, który jest maszyną wirtualną hostowaną przez organizację badawczą. Utrzymują, że dostęp do maszyn wirtualnych odbywa się za pomocą kluczy ssh, co jest dobre, z wyjątkiem tego, że nie mogę wymyślić, jak wskazać rsync na klucz ssh dla tego serwera.
Rsync nie ma problemu, jeśli plik klucza jest ~/.ssh/id_rsa
, ale gdy jest to coś innego, dostaję Permission denied (publickey)
.
Za pomocą ssh mogę określić plik tożsamości za pomocą -i
, ale rsync wydaje się nie mieć takiej opcji.
Próbowałem także tymczasowo przenieść klucz na maszynie lokalnej do ~/.ssh/id_rsa
, ale to również nie działa.
tl; dr
Czy możesz podać plik tożsamości za pomocą rsync?
sudo rsync
, który z jakichś powodów nie używa własnych kluczy ssh.rsync -aAP "sudo -u user ssh" user@server:dir local_dir
podczas synchronizacji ze skryptów cron, które działają jako rootOdpowiedzi:
Możesz podać dokładne polecenie ssh za pomocą opcji „-e”:
Wielu użytkowników ssh nie zna swojego pliku ~ / .ssh / config. Możesz określić ustawienia domyślne dla hosta za pomocą pliku konfiguracyjnego.
Na dłuższą metę najlepiej jest nauczyć się pliku ~ / .ssh / config.
źródło
~/.ssh/config
plik - otworzyłeś nowy świat dla mnie!Można to zrobić za pomocą konfiguracji użytkownika SSH patrz: http://www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ w zasadzie edytuj ~ / .ssh / config:
Powinno to działać dla każdego programu używającego SSH, rsync,
źródło
Dla mnie wystarczyło uruchomić ssh-agent w następujący sposób:
Zobacz też dłuższą odpowiedź tutaj https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent
źródło
FYI:
1) Klucz publiczny znajduje się zawsze w katalogu osobistym użytkownika logującego się na zdalnym serwerze, tzn. Jeśli logujesz się jako „kopia zapasowa”, znajduje się on na /home/backup/.ssh/authorized_keys. Identyfikator użytkownika podczas logowania określa klucz publiczny używany w miejscu docelowym.
Możesz wybrać identyfikator użytkownika podczas nawiązywania połączenia na dwa różne sposoby:
Z drugiej strony, na twoim końcu klucz prywatny jest w podobny sposób w homedir użytkownika, chyba że zastąpisz go tak, jak opisano w odpowiedzi Dana.
2) W celu utworzenia kopii zapasowej może być pożądane utworzenie klucza z ograniczeniami, który może uruchamiać tylko jedną komendę, np. „Rsync”. Istnieje dobry opis tego, co dotyczy kopii zapasowej „rsnapshot”, która umożliwia zdalne tworzenie kopii zapasowych całego serwera przy użyciu konta użytkownika nieuprzywilejowanego i „sudo”:
„rsnapshot” howto
Rsnapshot może z łatwością wykonać kopię zapasową wielu zdalnych lub lokalnych serwerów, dzięki czemu jest poręcznym i scentralizowanym serwerem kopii zapasowych.
źródło