通过SSHvalidationrsync authorized_keys命令=“…”

我想通过sshd的authorized_keys文件来validationrsync

问题是我无法pipe理从validation脚本执行rsync。


这是我的authorized_keys文件:

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

这里的valrsync脚本每次尝试都是不同的:

testing1 –

 $SSH_ORIGINAL_COMMAND 

输出 –

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

而且,更重要的是,testing2 –

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

输出(从本地机器运行rsync并获得远程机器上valrsync的输出) –

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

据我所知,rsync以某种方式在远程机器上产生了一个自己的实例,显然,当我试图通过脚本执行rsync命令时,这个实例不被引用。 rsync没有安装在服务器上,我知道它不应该。

现在的问题是,我能做些什么(除了可能在服务器上安装rsync …?)

您收到的错误是rsync: command not found 。 这通常意味着您的$PATH环境variables设置不正确。 使用你的第一个testing,明确地设置PATH来包含rsync命令的安装目录。 例如:

 #!/bin/sh PATH=/usr/local/bin:$PATH export PATH $SSH_ORIGINAL_COMMAND 

确保使chmod 755 valrsync可执行( chmod 755 valrsync )。

所有这一切都假定rsync实际上安装在目标系统上。

确保已安装rsync并在两端(客户端和服务器)的PATH中。 rsync客户端使用SSH在远程(服务器)端执行rsync。 这就是rsync的工作原理。