我想通过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的工作原理。