©
本文档使用
php.cn手册 发布
(PECL ssh2 >= 0.9.0)
ssh2_auth_password — Authenticate over SSH using a plain password
$session
, string $username
, string $password
)Authenticate over SSH using a plain password. Since version 0.12 this function also supports keyboard_interactive method.
session
An SSH connection link identifier, obtained from a call to ssh2_connect() .
username
Remote user name.
password
Password for username
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
Example #1 Authenticating with a password
<?php
$connection = ssh2_connect ( 'shell.example.com' , 22 );
if ( ssh2_auth_password ( $connection , 'username' , 'secret' )) {
echo "Authentication Successful!\n" ;
} else {
die( 'Authentication Failed...' );
}
?>
[#1] sgchris at gmail dot com [2015-06-29 11:00:54]
Please note that the function ssh2_auth_password raises PHP warning(!) on bad authentication. To avoid the warning, use the "silence" ("@") operator.
<?php
$ssh = ssh2_connect($host);
if (false === $ssh) {
die('connection failed');
}
$auth = @ssh2_auth_password($ssh, $user, $password);
if (false === $auth) {
die('authentication failed');
}
?>
[#2] wally at soggysoftware dot co dot uk [2007-04-11 15:09:06]
This function is useful for authenticating website clients against local (or remote) Unix users.
I'd played around with Apache+PAM, various mod_auths and homebrewed shell programs and even NIS, but to authenticate a user against a Unix shadow file fundamentally requires root priviledges, so either your PHP script needs root or an external program needs it's sticky bit set. Both of these have *serious* security implications.
Using SSH, the overhead is obviously going to be greater but you're trusting a root service that's been (and continues to be) really well tested. Just try authing with SSH against localhost (or another host if you want).
[#3] noels01 at gmx dot net [2005-08-29 05:56:23]
Do not try to authenticate or log in more than once on a ssh2 connection. It won't work. You'll need a new connection via ssh2_connect() which will result in a poor performance if you're doing several connects to the same server.