rsync przez ssh: czy hasło ssh można wprowadzić w linii poleceń?


3

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?


1
Umieszczanie haseł w wierszach poleceń jest z natury niebezpieczne, ponieważ wszystkie wiersze poleceń są publiczne dla wszystkich użytkowników komputera ( ps -ef ). Nie rób tego.
— ceving

Dobry punkt, dzięki za to. Ale to jest po prostu skrypt ant działający w moim systemie dev. Uważam, że jest o wiele bardziej prawdopodobne, że ktoś otrzyma plik klucza, który jest trwale przechowywany, automatycznie tworzony w sieci i prawdopodobnie zapomniany, niż ktoś odbiera hasło Polecenie ps w ciągu 5 sekund, przez które skrypt może być uruchomiony.
— davidparks21

Właściwie pracuję nad używaniem oczekiwanej obsługi interaktywnej części hasła, myślę, że to może być najlepsza odpowiedź, ale po drodze natknąłem się na kilka blokad drogowych.
— davidparks21

1
Możesz chronić swój plik klucza za pomocą hasła i możesz użyć ssh-agent, aby otworzyć klucz do sesji programowania.
— ceving

Odpowiedzi:


3

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:

<input message="Enter username for ${website.host}:" addproperty="host.username" />
<input message="Enter password for ${website.host}:" addproperty="host.password" />

<sshexec host="${website.host}" trust="true"
         username="${host.username}" password="${host.password}"
         inputstring="${host.password}"
         command='read var; expect -c "spawn sudo chmod u+x /usr/local/website/bin/start_website" -c "expect ${host.username}:" -c "send ${var}\r" -c "wait"' />

Zwróć uwagę na wiersz polecenia:

read var; expect -c "spawn sudo chmod u+x /usr/local/website/bin/start_website" -c "expect ${host.username}:" -c "send ${var}\r" -c "wait"

Najpierw, my read STDIN na zmienną var. Potem strzelamy expect który wykonuje pewne czynności wymagające interakcji użytkownika: sudo w tym przypadku. Gdy sudo monituje o hasło, które wysyłamy z przechowywanej zmiennej var i wait aby proces się zakończył.


0

Ponieważ obie maszyny będą Ci znane, możesz bezpiecznie zignorować hasło od indywidualnego użytkownika, a następnie:

  1. nadaj użytkownikowi sudo prawa do rsync rsync, aby uzyskać dostęp do wszystkiego

  2. 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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.