0

RADIUS サーバーに対して認証する CISCO スイッチに接続する方法を見つけようとしています。これは産業レベルのスイッチではなく、中小企業向けのスイッチです。

私は他のスイッチに phpseclib を使用してきましたが、この特定のスイッチの動作方法にいくつかの違いがあるため、独自のソリューションを展開することを検討しています。

次の基本的なコードがあります。

  <?php
  echo "attempt connect....<br>";

  Try{

        $connection = ssh2_connect('10.14.3.45', 22);
        var_dump($connection);
        echo "attemp ssh2 authorization....<br>";

       echo ssh2_auth_password($connection, 'CANNetworkInfra', 'fe8CC+ad4aA9');
       exit;
       $stream = ssh2_exec($connection, 'show bonjour');
       $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);

       // Enable blocking for both streams
       stream_set_blocking($errorStream, true);
       stream_set_blocking($stream, true);

      // Whichever of the two below commands is listed first will receive its appropriate output.  The second command receives nothing
      echo "Output: " . stream_get_contents($stream);
      echo "Error: " . stream_get_contents($errorStream);

      // Close the streams       
      fclose($errorStream);
      fclose($stream);  
     }
     catch (Exception $ex)
     {
       echo 'doing a var dump:';
        var_dump($connection);
      }

このコードは、次のエラー メッセージで停止しています。

警告: ssh2_auth_password() [function.ssh2-auth-password]: 10 行目の /var/www/test/customssh.php のパスワードを使用したユーザー名の認証に失敗しました

問題は、スイッチが常に公開鍵を探しているという事実に関係していると思います-RADIUSサーバーに対して認証したいので、これは使用していません。手動で接続すると、次のようになります。

  1. ターミナル ウィンドウで次のコマンドを実行します: "ssh username@ipaddress"
  2. スイッチは、/home/username/.ssh/id_rsa のデフォルト フォルダーで公開鍵をチェックします。
  3. ファイルが見つからないため、スイッチはユーザー名の入力を求めます。もう一度入力します。
  4. 次に、パスワードの入力を求めます。
  5. 正しいパスワードを入力すると、接続されます。

スイッチの公開鍵に対するこのチェックを無効にする方法は見つかりませんでした。私の質問は、ssh2_auth_password() 経由でユーザー名を 2 回送信して、手動で接続することをシミュレートできる方法はありますか?

ありがとう。

4

1 に答える 1

0

いくつかの調査を行った後、これが私たちの問題の解決策です。他の人は別の方法で解決したかもしれませんが、これは私たちにとってうまくいくようです.

この特定の一連の CISCO スイッチ (SF300) について次のことに気付きました。

  1. phpseclib などの一般的な ssh ライブラリは、ssh の実装が制限されているため、このスイッチでは失敗していました。

  2. php の ssh2_auth_none 関数は、このスイッチで TRUE を返します。

これは何を意味するのでしょうか?

sshプロトコルには「none」という認証方式があるようです。これは安全ではなく、通常、ほとんどのスイッチで無効になっています。ssh2_auth_none() 関数は、認証なしで接続を試み、失敗すると、サーバーが受け入れる認証方法のリストを返します。SF300 の場合、認証メソッドに対しては何も渡されず、何も返されません。

  1. CLI および SSH の既知の制限事項

ソリューションを提供することはできませんでしたが、CISCO のテクニカル サポートは、スモール ビジネス クラスのスイッチには制限付きの CLI と SSH の簡素化されたバージョンもあると明確に述べているため、これをエンタープライズ レベルのスイッチとして扱うことはできません。本格的な ssh 実装。

役立つ場合は、これらのタイプのデバイスに接続する方法を示す小さなコード スニペットを次に示します。

'; fwrite($stdio_stream, "ボンジュールを表示".PHP_EOL); //PHP_EOL の代わりに \n を使用できますが、PHP_EOL をお勧めします。スリープ (1); echo "
結果: " . stream_get_contents($stdio_stream); ?>

これが、これらのタイプのデバイスにプログラムで接続しようとしている人に役立つことを願っています.

于 2012-11-15T14:55:48.827 に答える