0

我需要将一些上传的文件镜像到网络上的另一台服务器。我目前使用的解决方案是使用ssh2_connect()ssh2_scp_send()在上传文件后立即复制文件。我正在使用 RSA 公钥身份验证。一切正常,但我们用来复制文件的帐户有一个过期密码,必须每六个月更改一次。在到期和密码更改之间,公钥身份验证也被禁用。

为了解决这个问题,我决定将转移转移给nobody没有密码并scponly作为其登录 shell 的用户。传输scpunisonshell 命令可以正常工作,但 PHPssh2函数什么也不做。

SSH2 库的功能应该使用scponly还是应该在别处寻找?或者这是一个scponly配置问题?

4

1 回答 1

0

libssh2 提供相当有限的诊断功能。我几乎建议您尝试连接phpseclib,这是一个纯 PHP SCP 实现,如果它不能使用,请启用日志记录。

例如。(不记录)

<?php
include('Net/SCP.php');
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('bad login');
}

$scp = new Net_SCP($ssh);
$scp->put('abcd', str_repeat('x', 1024*1024));
?>

并通过日志记录...

<?php
include('Net/SCP.php');
include('Net/SSH2.php');

define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('bad login');
}

$scp = new Net_SCP($ssh);
$scp->put('abcd', str_repeat('x', 1024*1024));

echo $ssh->getLog();
?>

假设您不只是想将 phpseclib 用于您获得的全部内容,可能会从中获得一些有用的信息,但这些信息将帮助您诊断问题。

于 2013-09-10T19:46:56.037 回答