使用php进行身份验证的问题';s ssh2
我试图在脚本运行时使用PHP的SSH2打开两台服务器之间的SSH连接,并使用来自的信息找到了一些地方。也就是说,使用下面的代码,我一直无法进行身份验证。这两台服务器似乎在通信,但根本没有进行身份验证,因为我收到了“fail:cannotauthenticate”消息。我可以使用相同的信息直接使用web服务器的终端轻松连接。由于明显的原因,这些值是通用的。如果这意味着什么的话,SSH服务器是一个运行Mountain Lion的Mac(它运行OS X虚拟机),web服务器运行Ubuntu 12.04使用php进行身份验证的问题';s ssh2,php,apache,ubuntu,ssh,osx-mountain-lion,Php,Apache,Ubuntu,Ssh,Osx Mountain Lion,我试图在脚本运行时使用PHP的SSH2打开两台服务器之间的SSH连接,并使用来自的信息找到了一些地方。也就是说,使用下面的代码,我一直无法进行身份验证。这两台服务器似乎在通信,但根本没有进行身份验证,因为我收到了“fail:cannotauthenticate”消息。我可以使用相同的信息直接使用web服务器的终端轻松连接。由于明显的原因,这些值是通用的。如果这意味着什么的话,SSH服务器是一个运行Mountain Lion的Mac(它运行OS X虚拟机),web服务器运行Ubuntu 12.04
<?php
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
if(!($con = ssh2_connect('192.168.0.1', 22))){
echo "fail: unable to establish connection\n";
} else {
if(!ssh2_auth_password($con, 'myusername', 'mysecretpassword')) {
echo "fail: unable to authenticate\n";
} else {
echo "okay: logged in...\n";
// execute a command
if (!($stream = ssh2_exec($con, "mysshcommand" ))) {
echo "fail: unable to execute command\n";
} else {
stream_set_blocking($stream, true);
$data = "";
while ($buf = fread($stream,4096)) {
$data .= $buf;
}
fclose($stream);
}
}
}
?>
我不能确定,但您连接的服务器可能使用的是键盘交互式身份验证,而不是密码身份验证。使用PuTTY这样的客户,他们看起来会一样,但事实上他们不是
我的建议是使用。例如
它将首先尝试密码验证,如果失败,它将尝试键盘交互。即使失败,您也可以使用phpseclib获取日志,查看它在做什么。如果有必要的话,我会带你过去的
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>