Widzę, że możesz utworzyć klucz SSH, aby używać rsync przez ssh bez podania hasła.
Ale używam rsync przez ssh w Eclipse / ANT, gdzie hasło można wprowadzać interaktywnie, ale wtedy interakcja między eclipse a poleceniem rsync nie jest interaktywna (jest to jedno wywołanie linii poleceń), więc musiałbym określić hasło uzyskane w eclipse w linii poleceń.
czy to możliwe?
ps -ef
). Nie rób tego.Odpowiedzi:
Po gorącej walce między mną a komputerem, w końcu mam odpowiedź, która nie została omówiona w żadnym artykule, który mógłbym znaleźć. Opublikuję na ten temat bloga.
Rozwiązaniem jest użycie nowej funkcji naprawionej tylko w wersji alpha ant 1.8.3, która wydaje się być poprawką w stosunku do wersji 1.8.2, więc prawdopodobnie jest wystarczająco stabilna nawet z tytułem alfa. Ta funkcja umożliwia przekazywanie danych do STDIN skryptu, a mianowicie hasła. Następnie możesz użyć standardowych narzędzi linux lub cygwin na Windows
read
hasło wyłącz STDIN i użyj go jako zmiennej.Brak zależności , brak plików kluczy, brak wyciekającego hasła w wierszu poleceń, brak zapisanych haseł. W końcu widzę trochę światła poza mroczną, ponurą egzystencją, której doznałem w ciągu ostatnich kilku dni.
Oto zadanie ANT, które właśnie to robi:
Zwróć uwagę na wiersz polecenia:
Najpierw, my
read
STDIN na zmiennąvar
. Potem strzelamyexpect
który wykonuje pewne czynności wymagające interakcji użytkownika:sudo
w tym przypadku. Gdysudo
monituje o hasło, które wysyłamy z przechowywanej zmiennejvar
iwait
aby proces się zakończył.źródło
Ponieważ obie maszyny będą Ci znane, możesz bezpiecznie zignorować hasło od indywidualnego użytkownika, a następnie:
nadaj użytkownikowi sudo prawa do rsync rsync, aby uzyskać dostęp do wszystkiego
ustaw klucz prywatny / bez hasła zaloguj się używając tego użytkownika rsync z komputer zdalny i wywołanie rsync z sudo przez ssh
W ten sposób hasło nie będzie miało znaczenia, a będziesz bardziej bezpieczny.
źródło
Możesz po prostu użyć ssh-agent i keychain.
źródło