Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> PHP i SSH2 Extension
patlysy
post 25.08.2010, 09:15:58
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Witam,

Pracuję na systemie Windows 7 z zainstalowaną paczką XAMPP. Próbuję załadować dodatkowy moduł SSH2. W tym celu ściągnąłem bibliotekę php_ssh2.dll i umieściłem w katalogu php/ext. W pliku konfiguracyjnym php.ini dodałem wpis extension=php_ssh2.dll. Niestety po restarcie serwera moduł nie jest ładowany. Ręcznie przez PECL też próbowałem zainstalować. Czy ktoś spotkał się kiedyś z takim problemem? Jest sporo tutoriali w necie jak to naprawić ale pod linuksa. Ja na obecną chwilę pracuje na Windowsie.

Inna sprawa, nie mogąc zainstalować modułu php_ssh2.dll postanowiłem korzystać z gotowych rozwiązań typu SSH in PHP albo PHPseclib. Dodam jeszcze, że modułu SSH potrzebuję do łączenia się z routerem CISCO. I niby wszystko wygląda dobrze. Nawiązuje połączenie ale żaden skrypt nie odpowiada na próbę czytania czy zapisania danych. Czy router CISCO ma jakiś specyficzny rodzaj komunikacji? Tym samym skryptem łączyłem się z moim serwer z postawionym Linuksem. Połączenie działa doskonale, Mogę wydawać komendy i otrzymywać odpowiedź. Czemu skrypt komunikując się z routerem nie może zbudować sobie kanału komunikacyjnego? Na tą chwile działa mi jedynie komunikacja Telnet a ona jednak nie jest zbyt bezpieczna sad.gif

Proszę o odpowiedź.
Pozdrawiam

Ten post edytował patlysy 25.08.2010, 09:18:28
Go to the top of the page
+Quote Post
wookieb
post 25.08.2010, 10:09:26
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wejdź do konsoli
Wpisz
Kod
php -v

I powiedz co Ci wypluje. Podaj także adres z którego pobierałeś php_ssh2.dll


--------------------
Go to the top of the page
+Quote Post
patlysy
post 25.08.2010, 10:39:32
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Hmm. Co do php_ssh2.dll to powiem szczerze, że linku nie pamiętam. Ale z tego co pamiętam pobrany z jakiegoś prywatnego źródła od użytkowników wypowiadających się na php.net.

Wydając polecenie php-v widzę, że są jakieś błedy:

Cytat
PHP Warning: PHP Startup: ssh2: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090623
These options need to match
in Unknow on line 0

Warning: PHP Startup: ssh2: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090623
These options need to match
in Unknow on line 0


Czy to jest błąd związany z php_ssh2.dll? Czy znacie jakieś zaufane źródło gdzie można ową bibliotekę pobrać?
Go to the top of the page
+Quote Post
wookieb
post 25.08.2010, 10:41:19
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Wyłącz narazie ten moduł i uruchom php -v jeszcze raz.


--------------------
Go to the top of the page
+Quote Post
patlysy
post 25.08.2010, 11:01:09
Post #5





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Wyłączyłem i dostałem odpowiedź o następującej treści:

Cytat
PHP 5.3.0 (cli) (built: Jul 2 2009 21:08:11)
Copyright © 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright © 1998-2009 Zend Technologies


Co teraz powinienem zrobić?
Go to the top of the page
+Quote Post
wookieb
post 25.08.2010, 11:34:07
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Kurcze głupi jestem :/ Przepraszam.
Utwórz plik
i uruchom go w przeglądarce.
Potrzebne dla nas informacje to PHP Extension Build


--------------------
Go to the top of the page
+Quote Post
patlysy
post 25.08.2010, 11:45:32
Post #7





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Phpinfo() zwraca następujące (podstawowe) dane:

Cytat
PHP Version 5.3.0

System Windows NT LYSY-PC 6.1 build 7600 ((null)) i586
Build Date Jul 2 2009 21:02:53
Compiler MSVC6 (Visual C++ 6.0)
Architecture x86
Configure Command cscript /nologo configure.js
Server API Apache 2.0 Handler
Virtual Directory Support enabled
Configuration File (php.ini) Path no value
Loaded Configuration File D:\serwerPHP\xampp\php\php.ini
Scan this dir for additional .ini files (none)
Additional .ini files parsed (none)
PHP API 20090626
PHP Extension 20090626
Zend Extension 220090626
Zend Extension Build API220090626,TS,VC6
PHP Extension Build API20090626,TS,VC6
Debug Build no
Thread Safety enabled
Zend Memory Manager enabled
Zend Multibyte Support disabled
IPv6 Support enabled
Registered PHP Streams https, ftps, php, file, glob, data, http, ftp, compress.zlib, compress.bzip2, phar, zip
Registered Stream Socket Transports tcp, udp, ssl, sslv3, sslv2, tls
Registered Stream Filters convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*, bzip2.*

Go to the top of the page
+Quote Post
wookieb
post 25.08.2010, 11:56:21
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Super smile.gif
Masz zainstalowanego php VC6 Thread-safe.
Nie znalazłem rozszerzenia pod tą wersję.
Na tej stronie http://downloads.php.net/pierre/ jest php_shh2 pod wersję vc9 ( http://downloads.php.net/pierre/php_ssh2-s...5.3-vc9-x86.zip ) .Gdybyś uaktualnił u siebie php pod tą wersję byłoby ok smile.gif
http://windows.php.net/download/ -> VC9 x86 Thread Safe (2010-Jul-21 20:29:51)

Ten post edytował wookieb 25.08.2010, 11:56:31


--------------------
Go to the top of the page
+Quote Post
patlysy
post 25.08.2010, 12:04:43
Post #9





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Super :-)

Dziękuję bardzo :-) obecnie jadę do pracy a tego posta pisze z komórki. Wieczorem przetestuje i odpowiem jak wygląda stuacja :-) a czy znasz może odpowiedź odnośnie routera? Jaka może być tego przyczyna że za pomocą skryptu klienta ssh możliwe jest jedynie zalogowanie się na urządzenie? I router skonfigurowany jest poprawnie. Bez problemu łącze się z nim przez putty.

Pozdrawiam i dziękuję
Go to the top of the page
+Quote Post
wookieb
post 25.08.2010, 12:11:07
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie wiem co to dokładnie za urządzenia ani też nie mam jego dokumentacji. Producent w swoim dziale pomocy powinien zawrzeć taką informację.


--------------------
Go to the top of the page
+Quote Post
patlysy
post 26.08.2010, 06:17:06
Post #11





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Wczoraj oczywiście nie miałem już za wiele czasu by cokolwiek wieczorem zrobić. Przyznam się jednak szczerze (ze wstydem), że do tej pory korzystałem z gotowych rozwiązań typu XAMPP bądź też EasyPHP. Pierwszy raz instaluje osobno Apacha i PHP. Będę musiał jeszcze dzisiaj poszukać jak skonfigurować apacha by ładował moduł PHP. Tak czy inaczej po zainstalowaniu PHP napotkałem kolejny problem. W extension nie ma biblioteki od SNMP, którą w dużym stopniu muszę wykorzystać w projekcie. Czy masz może źródło gdzie mogę pobrać ową DLL-kę dla V9?

Pozdrawiam

Ten post edytował patlysy 26.08.2010, 06:17:51
Go to the top of the page
+Quote Post
wookieb
post 26.08.2010, 07:44:24
Post #12





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




W paczkach zip (dla wersji 5.3.2 oraz 5.3.3) jest rozszerzenie snmp. Nie wiem jak w reszcie form "instalacyjnych".


--------------------
Go to the top of the page
+Quote Post
patlysy
post 26.08.2010, 15:19:38
Post #13





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


No hej,

Zainstalowałem już Apacha i PHP 5.3.3. Serwer działa poprawnie. Do katalogu ext dodałem dwie biblioteki .dll - php_ssh2.dll oraz php_snmp.dll. Zmian dokonałem także w pliku php.ini. Moduł ssh załadowało poprawnie. Sprawdziłem w kodzie i rozpoznaje funkcje typu ss2_connect(). Problem tym razem dotyczy omawianej już wcześniej biblioteki dla SNMP. Wziąłem ją z wersji binarnej php-5.3.3-Win32-VC9-x86. PHP wraz z serwer mam na dysku D (D:\php). W katalogu D:\usr umieściłem miby z pakietu net-snmp. Wyczytałem, że właśnie tam powinny się znajdować. Jednak po wydaniu polecenia z wiersza poleceń php-v zwraca mi następujące błędy:

Cytat
Cannot find modue (IP-MIB): At line 0 in (none)
Cannot find modue (IF-MIB): At line 0 in (none)
Cannot find modue (TCP-MIB): At line 0 in (none)
Cannot find modue (UDP-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-SMI): At line 0 in (none)
Cannot find modue (UCD-SNMP-MIB): At line 0 in (none)
Cannot find modue (UCD-DEMO-MIB): At line 0 in (none)
Cannot find modue (SNMP-VIEW-BASED-ACM-MIB): At line 0 in (none)
Cannot find modue (SNMP-COMMUNITY-MIB): At line 0 in (none)
Cannot find modue (UCD-DLMOD-MIB): At line 0 in (none)
Cannot find modue (SNMP-FRAMEWORK-MIB): At line 0 in (none)
Cannot find modue (SNMP-MPD-MIB): At line 0 in (none)
Cannot find modue (SNMP-USER-BASED-SM-MIB): At line 0 in (none)
Cannot find modue (SNMP-NOTIFICATION-MIB): At line 0 in (none)
Cannot find modue (SNMP-TARGET-MIB): At line 0 in (none)
Cannot find modue (SNMPv2-TM): At line 0 in (none)


Wookieb czy i tym razem pomógłbyś mi rozwiązać ten problem?

Pozdrawiam

P.S. Zaraz przetestuje czy wykorzystując bibliotekę ssh2.dll uda mi się nawiązać połączenie z routerem.

Przetestowałem moduł ssh na podstawie następującego skryptu:

  1. if(!($con = ssh2_connect("192.168.2.1", 22))){
  2. echo "fail: unable to establish connection\n";
  3. } else {
  4. // try to authenticate with username root, password secretpassword
  5. if(!ssh2_auth_password($con, "user", "password")) {
  6. echo "fail: unable to authenticate\n";
  7. } else {
  8. // allright, we're in!
  9. echo "okay: logged in...\n";
  10.  
  11. // execute a command
  12. if (!($stream = ssh2_exec($con, "sh version\n" ))) {
  13. echo "fail: unable to execute command\n";
  14. } else {
  15. // collect returning data from command
  16. stream_set_blocking($stream, true);
  17. $data = "";
  18. while ($buf = fread($stream,4096)) {
  19. $data .= $buf;
  20. }
  21. fclose($stream);
  22. }
  23. }
  24. }


Niestety komunikacja z routerem dalej nie działa. Wnioskuje, że może być to problem z końcem linii. Przeglądarka czeka na odpowiedź ale jej nie uzyskuje gdyż router nie może zatwierdzić polecenia. I tak się zawiesza cała aplikacja. Próbowałem różnych kombinacji - \n, \n\r, \r\n. Niestety żaden znacznik nie jest odpowiedni (chyba, że problem tkwi w czymś innym). Znacie może jeszcze jakieś możliwości jak SSH może oznaczać koniec linii?

Ten post edytował patlysy 26.08.2010, 15:57:21
Go to the top of the page
+Quote Post
wookieb
post 26.08.2010, 21:08:49
Post #14





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Teraz to nie wiem czy już pracujesz na xammpie czy na samym apache-u smile.gif
Moja instalacja jest najczystszą z możliwych. Rozpakowany zip, troche ustawień i koniec. Nie wiem skąd i gdzie kopiowałeś swoje dll-e bo powinno być w jednym miejscu.
Sprawdziłem jak mi pójdzie instalacja.
Rozpoczęła się odblokowaniem rozszerzenia php_snmp.dll z php.ini i... w phpinfo jest pokazane, że jest zainstalowane. Tylko tyle.
Szczerze mówiąc nie wiem jak wygląda teraz twoja instalacja serwera ale jeżeli mógłbym doradzić to nigdy nie instaluj xammp-a ani innych.
Bazuj na czystej instalacji ponieważ o wiele łatwiej z aktualizacjami. Tutoriale jak zainstalować apache, php, mysql są dostępne w internecie.


--------------------
Go to the top of the page
+Quote Post
patlysy
post 26.08.2010, 22:23:26
Post #15





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Ok ok. Będę próbował. Co do Xamppa, nie korzystam już z niego. Teraz mam zainstalowany czysty serwer Apacha z PHP. Jutro będę kombinował. A z tym ssh nie masz pomysłów?
Go to the top of the page
+Quote Post
wookieb
post 26.08.2010, 22:33:58
Post #16





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A do jakiego momentu dochodzi skrypt? Z tego co się spotykałem znaków nowej linii nie wysyła się poprzez tą funkcję.


--------------------
Go to the top of the page
+Quote Post
patlysy
post 27.08.2010, 06:35:45
Post #17





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Funkcja nawiązuje połączenie. Dostaję komunikat, że zostałem zalogowany i do tej pory jest wszystko ok. W momencie kiedy wywołuję metodę ssh2_exec przeglądarka zapętla się i nie zwraca odpowiedzi. Wczoraj przeprowadzałem też testy skryptem napisanym w JAVIE. Z pod konsoli odpaliłem mały programik, który również nawiązał połączenie ale niestety odpowiedzi nie otrzymał.

Co ciekawe próbowałem także ze znakami hex typu 0x0A (line feed) bądź też 0x0D (Carriage return) i to było dziwne. Skrypt po zastosowaniu takich poleceń końca linii zakończył się jednak odpowiedzi też nie zwrócił.

Dodam jeszcze, że SSH na routerze na pewno dobrze jest skonfigurowane. Łącze się bez problemu przez putty. Dziwna dolegliwość. Chciałbym znaleźć rozwiązanie. Buduję aplikację samo zabezpieczającą sieć jako pracę dyplomową. Jeśli zostanę przy telnecie to aplikacja sama w sobie nie będzie bezpieczne :/

Pozdro
Go to the top of the page
+Quote Post
wookieb
post 27.08.2010, 07:24:56
Post #18





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Faktycznie mi też wywala błąd SNMP ale tylko z linii komend. Myślałem, że wywali go też wcześniej przy odpalaniu phpinfo - niestety nie. Jak wrócę z pracy popróbuję coś z tym pokombinować.

Co do SSH2 to szczerze mówiąc nie mam z tym modułem żadnego doświadczenia ale podejrzewam, jedną rzecz, że kiedy pierwszy raz łączyłeś się przez putty do routera, nie prosiło czasem o zaakceptowania klucza? Może coś takiego powoduje problem.

Router posiada może listę wydanych poleceń. Za pomocą polecenia "history" możesz podejrzeć jakie komendy wysłał twój skrypt do routera.
Jeżeli nic nie pomoże załóż oddzielny temat dotyczący tego problemu.

Ten post edytował wookieb 27.08.2010, 08:18:12


--------------------
Go to the top of the page
+Quote Post
patlysy
post 27.08.2010, 09:22:24
Post #19





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 25.08.2010

Ostrzeżenie: (0%)
-----


Witam ponownie,

Głowiłem się nad Twoim pomysłem z kluczem jednak sprawdziłem ewentualne problemy z tym związane i to też nie to. Na routerze (bądź też firewallu sprzętowym) włączyłem debugowanie komend. Sprawdziłem jak wygląda próba połączenia przez putty a jak przez skrypt php. I tu widać, że serwer z kompem wymieniają się kluczami i ustanawiają połączenie. Poniżej przedstawiam logi:

Odpowiedź routera dla połączenia PUTTY:
Cytat
Device ssh opened successfully.
SSH2: SSH client: IP = '192.168.1.2' interface # = 1
SSH: host key initialised
SSH2: starting SSH control process
SSH2: Exchanging versions - SSH-1.99-Cisco-1.25

SSH2: send SSH message: outdata is NULL

server version string:SSH-1.99-Cisco-1.25SSH2: receive SSH message: 83 (83)
SSH2: client version is - SSH-2.0-PuTTY_Release_0.60

client version string:SSH-2.0-PuTTY_Release_0.60SSH2: begin server key generation
SSH2: complete server key generation, elapsed time = 1600 ms

SSH2 2: SSH2_MSG_KEXINIT sent
SSH2 2: SSH2_MSG_KEXINIT received
SSH2: kex: client->server aes256-cbc hmac-sha1 none
SSH2: kex: server->client aes256-cbc hmac-sha1 none
SSH2 2: expecting SSH2_MSG_KEXDH_INIT
SSH2 2: SSH2_MSG_KEXDH_INIT received
SSH2 2: signature length 143
SSH2: kex_derive_keys complete
SSH2 2: newkeys: mode 1
SSH2 2: SSH2_MSG_NEWKEYS sent
SSH2 2: waiting for SSH2_MSG_NEWKEYS
SSH2 2: newkeys: mode 0
SSH2 2: SSH2_MSG_NEWKEYS receivedSSH(pix): user authen method is 'no AAA', aaa server group ID = 0
SSH(pix): user authen method is 'no AAA', aaa server group ID = 0

SSH2 2: authentication successful for pix
SSH2 2: channel open request
SSH2 2: pty-req request
SSH2 2: requested tty: xterm, height 24, width 80

SSH2 2: shell request
SSH2 2: shell message received


Odpowiedź routera dla skryptu PHP:
Cytat
Device ssh opened successfully.
SSH3: SSH client: IP = '192.168.1.2' interface # = 1
SSH: host key initialised
SSH3: starting SSH control process
SSH3: Exchanging versions - SSH-1.99-Cisco-1.25

SSH3: send SSH message: outdata is NULL

server version string:SSH-1.99-Cisco-1.25SSH3: receive SSH message: 83 (83)
SSH3: client version is - SSH-2.0-libssh2_1.1 PHP

client version string:SSH-2.0-libssh2_1.1 PHPSSH3: begin server key generation

SSH3: complete server key generation, elapsed time = 2640 ms

SSH2 3: SSH2_MSG_KEXINIT sent
SSH2 3: SSH2_MSG_KEXINIT received
SSH2: kex: client->server aes256-cbc hmac-sha1 none
SSH2: kex: server->client aes256-cbc hmac-sha1 none
SSH2 3: expecting SSH2_MSG_KEXDH_INIT
SSH2 3: SSH2_MSG_KEXDH_INIT received
SSH2 3: signature length 143
SSH2: kex_derive_keys complete
SSH2 3: newkeys: mode 1
SSH2 3: SSH2_MSG_NEWKEYS sent
SSH2 3: waiting for SSH2_MSG_NEWKEYS
SSH2 3: newkeys: mode 0
SSH2 3: SSH2_MSG_NEWKEYS receivedSSH(pix): user authen method is 'no AAA', aaa server group ID = 0

SSH2 3: authentication successful for pix
SSH2 3: channel open request
SSH2 3: exec request
SSH2 3: exec message receivedSSH3: Session disconnected by SSH server - error 0x00 "Internal error"


Dostrzegłem tylko jedną różnice. Mianowicie przy próbie wysłania polecenia. Putty ustala kanał komunikacyjny a skrypt nie:

Putty:
SSH2 2: channel open request
SSH2 2: pty-req request
SSH2 2: requested tty: xterm, height 24, width 80


PHP:
SSH2 3: channel open request
SSH2 3: exec request

Czy za pomocą skrypty PHP można ustalić taki kanał? Może to tu tkwi problem:

Przepraszam jeśli temat zszedł nieco za bardzo na sprawy związane z sieciami. "Sieciowcy" jednak nie odpowiedzą mi na takie pytanie.

Pozdro

Ten post edytował patlysy 27.08.2010, 09:23:08
Go to the top of the page
+Quote Post
wookieb
post 27.08.2010, 09:28:15
Post #20





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Za pomocą ssh2_shell
Zrobisz to co chcesz, następnie spróbuj wykonywać polecenia używając zasobu zwróconego przez powyższą funkcję.


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 13:57