我正在尝试制作将执行scp命令并传递一些文件的php脚本。问题是命令需要回答“是/否”问题和密码。我无法理解如何从脚本中传递它。
我的代码:
$command = "scp $filename {$config['Username']}@{$config['Server']}:{$config['Basedir']}";
echo $command;
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("file", sys_get_temp_dir() . "/error.txt", "w"), // stderr is a file to write to
);
$cwd = sys_get_temp_dir();
$env = array();
$process = proc_open($command, $descriptorspec, $pipes, $cwd, $env);
fwrite($pipes[0], "yes\n");
fwrite($pipes[0], $config['Password'] . "\n");
proc_close($process);
它不起作用。脚本问我“你确定要继续连接(是/否)?”每一次。
答案 0 :(得分:1)
这是一个安全确认,因为您连接到已知主机文件中未列出的远程服务器。请手动打开ssh或scp连接。 ssh会要求您接受远程服务器上的密钥。之后你的命令应该工作。
还有一些选项可以帮助您进行ssh批处理。
-oStrictHostKeyChecking=[yes|no]
-oUserKnownHostsFile=[/dev/null]
我不推荐这个。 ssh问你一个非常好的理由!