2012-11-14 99 views
0

我有一個場景,當我打電話ssh2_auth_none,它返回true。根據文檔,這似乎表明,這意味着交換機配置爲允許登錄而無需身份驗證。ssh2_auth_none返回true

但是,情況並非如此。我們正在使用的密碼...

這裏是我的代碼如下所示:

<?php 
$connection = ssh2_connect('10.124.123.45', 22); 

$auth_methods = ssh2_auth_none($connection, 'username'); 
var_dump($auth_methods); 

if (in_array('password', $auth_methods)) { 
     echo "Server supports password based authentication\n"; 
} 
?> 

,如果你有什麼我可以測試或檢查來解決此問題的任何意見或建議,只是想知道。最終,我希望能夠撥打ssh2_connectssh2_auth_password()登錄到此交換機。

謝謝。

回答

0

我們必須改變我們連接到這些類型的交換機的方式 - 問題的根本原因是這個交換機的ssh實現非常有限,所以流行的庫如phpseclib不起作用。

這裏是我們的代碼,它可以幫助任何人試圖連接到CISCO的小型企業級交換機。

<?php 
     $uname = 'myusername'; 
     $pswd = 'mypassword'; 
     $connection = ssh2_connect('123.123.123.123', 22); 
     //$authentication_methods = ssh2_auth_none($connection, 'user'); 
     $stdio_stream = ssh2_shell($connection); 
     fwrite($stdio_stream,$uname."\n"); 
     sleep(1); 
     fwrite($stdio_stream,$pswd."\n"); 
     sleep(1); 
     echo "Results: " . stream_get_contents($stdio_stream); 
     echo 'sending show bonjour command:<br>'; 
    fwrite($stdio_stream, "show bonjour".PHP_EOL); 
    sleep(1); 
    echo "<br>Results: " . stream_get_contents($stdio_stream); 
    ?>