Vérifier rsync de l'autre côté SSH authorized_keys command = «…»

J'essaie de vérifier rsync via le fichier. authorized_keys sshd.

Le problème est que je ne peux pas courir rsync Du script de vérificateur.

Voici mon fichier authorized_keys:

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

Voici un script valrsync Chaque fois différemment:

Test 1 -

$SSH_ORIGINAL_COMMAND

Production -

$ 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]

Et, plus important encore, testez 2 -

#!/usr/bin/python

import os
os.system(os.getenv('SSH_ORIGINAL_COMMAND'))

Production (Fonctionnement rsync d'un ordinateur local et obtenir une sortie

valrsync

Sur une machine distante) -

$ 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]

je comprends que rsync en quelque sorte génère son instance sur un ordinateur distant et, évidemment, cette instance n'est pas mentionnée lorsque j'essaie d'exécuter la commande rsync à travers le script. rsync Non installé sur le serveur et je sais que cela ne devrait pas être.

Maintenant la question est que je peux faire cela (De plus, peut-être l'installation rsync sur le serveur ...?)
Invité:

Dominique

Confirmation de:

Vous obtenez un message d'erreur

rsync: command not found

. Signifie généralement votre

$PATH

La variable d'environnement est mal installée. Utilisation de votre premier test, défini explicitement

PATH

Pour activer le répertoire dans lequel la commande est installée rsync. Par exemple:

#!/bin/sh

PATH=/usr/local/bin:$PATH
export PATH

$SSH_ORIGINAL_COMMAND

Assurez-vous de rendre le script exécutable (

chmod 755 valrsync

).

Tout cela suggère que rsync Vraiment installé dans le système cible.

Christine

Confirmation de:

La meilleure méthode que d'écrire un scénario chaleureux serait d'utiliser


rrsync

, qui dans les distributions basées sur Debian Vous avez déjà dû installer avec

rsync

dans

/usr/share/doc/rsync/scripts/rrsync.gz

. Dans ce cas, exécutez simplement la commande suivante pour décompresser un script compressé dans

/usr/bin/rrsync

:

gunzip /usr/share/doc/rsync/scripts/rrsync.gz -c|sudo tee^Cusr/bin/rrsync && sudo chmod +x /usr/bin/rrsync

(quand déjà commencé comme

root

De toute évidence, vous pouvez quitter

sudo

Appels)

Alternative
https://www.samba.org/ftp/unpa ... rsync
.

Rappel:

ayant

rsync

Installé sur un ordinateur distant (que ce qui

authorized_keys

déposer)

Ceci est fond

Ici.

Dès que cela se fait, vous pouvez simplement ajouter

command=

devant la corde à clé ouverte, causant

rrsync

.

Habituellement, vous allumez certains paramètres restrictifs SSH ensemble avec

command=

, Par conséquent, cela peut ressembler à ceci:

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

En fournissant ce catalogue (vous pouvez utiliser

-ro

lire seulement et

-wo

Seulement pour l'enregistrement) Vous pouvez laisser le catalogue sur

rsync

Appeler.

Donc, votre ligne de commande deviendra

rsync [...] / username@remotemachine:

(Faites attention à la voie manquée après

:

).

Emilie

Confirmation de:

Assurez-vous d'avoir installé rsync Et le chemin des deux extrémités (Client et serveur). Client rsync Les usages SSH pour l'exécution rsync Pour la télécommande (Serveur) côté. C'est comme ça que ça marche rsync.

Pour répondre aux questions, connectez-vous ou registre