Sprawdzanie rsync za pomocą polecenia SSH allowed_keys = "..."


Próbuję przetestować rsync za pomocą pliku sshd allowed_keys.
Problem w tym, że nie mogę uruchomić rsync ze skryptu testowego.

Oto mój plik Authorized_keys:

command="/home/username/Desktop/valrsync username" ssh-rsa AAAA [...]


Oto skrypt valrsync za każdym razem inaczej:


Test 1 -

$SSH_ORIGINAL_COMMAND

Wynik -
$ rsync [...]/username@remotemachine:/
/home/username/Desktop/valrsync: line 2: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]


Co ważniejsze, test 2 -

#!/usr/bin/pythonimport os
os.system(os.getenv('SSH_ORIGINAL_COMMAND'))

Wyjście (uruchamianie rsync z lokalnego komputera i pobieranie danych wyjściowych
       valrsync
na zdalnym komputerze) -
$ rsync [...]/username@remotemachine:/
sh: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]

Rozumiem, że rsync w jakiś sposób uruchamia swoją instancję na zdalnej maszynie i oczywiście ta instancja nie jest wspominana, gdy próbuję uruchomić polecenie rsync za pomocą skryptu. rsync nie jest zainstalowany na serwerze i wiem, że nie powinien.

Teraz pytanie brzmi, co mogę z tym zrobić (poza może instalacją rsync na serwerze ...?)

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Pojawia się błąd
         rsync: command not found
... Zwykle oznacza to, że Twój
         $PATH
zmienna środowiskowa nie jest ustawiona poprawnie. Korzystając z pierwszego testu, jawnie ustaw
         PATH
aby uwzględnić katalog, w którym jest zainstalowana komenda rsync. Na przykład:
#!/bin/shPATH=/usr/local/bin:$PATH
export PATH$SSH_ORIGINAL_COMMAND

Upewnij się, że skrypt jest wykonywalny (
         chmod 755 valrsync
).
Zakłada się, że rsync jest rzeczywiście zainstalowany w systemie docelowym.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Lepszą metodą niż pisanie skryptu domowego byłoby użycie
           rrsync
, który w dystrybucjach opartych na Debianie powinieneś był już zainstalować razem z
         rsync
w
/usr/share/doc/rsync/scripts/rrsync.gz
... W takim przypadku po prostu uruchom następujące polecenie, aby rozpakować skompresowany skrypt do
/usr/bin/rrsync
:
gunzip/usr/share/doc/rsync/scripts/rrsync.gz -c|sudo tee^Cusr/bin/rrsync && sudo chmod +x/usr/bin/rrsync

(gdy jest już uruchomiony jako
         root
oczywiście możesz wyjść
         sudo
odwołania)
Alternatywnie

Ściągnij
           rrsync
Tutaj
https://www.samba.org/ftp/unpa ... rsync
.

Przypomnienie:

mający
         rsync
zainstalowany na zdalnym komputerze (tym, który
         authorized_keys
plik)

jest to warunek wstępny

Tutaj.
Gdy to zrobisz, możesz po prostu dodać
         command=
przed ciągiem klucza publicznego przez wywołanie
         rrsync
.
Zwykle wraz z rozszerzeniem
         command=
więc może wyglądać tak:
command="/usr/bin/rrsync -wo/data/backup/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ecdsa-sha2-nistp521 AAAAE...

Udostępniając ten katalog (możesz użyć
         -ro
tylko do odczytu i
         -wo
tylko do zapisu), możesz opuścić katalog w
         rsync
apel.
W ten sposób twoja linia poleceń stanie się
         rsync [...]/username@remotemachine:
(zwróć uwagę na brakującą ścieżkę po
         :
).
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Upewnij się, że masz zainstalowany program rsync i ścieżkę do obu końców (klienta i serwera). Klient rsync używa SSH do wykonywania rsync po stronie zdalnej (serwera). Tak działa rsync.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się