![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 10.11.2010 Skąd: Jastrzębie Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Witam, nie wiedziałem za bardzo pod który dział podpiąć problem, pod PHP czy pod Serwery www, ale spróbuje tutaj.
Próbuję wysłać 6 plików na serwer SFTP. Autoryzacja do tego serwera odbywa się za pośrdenictwem privateKeya i hasła. Za cholerę ssh2_connect czy nawet biblioteka phpseclib nie może połączyć się z serwerem. Nie autoryzuje mi połączenia lub nie akceptuje mi pliku klucza i robi inne dziwne kwiatki. Natomiast w konsoli używając: łączy się normalnie. A że musze to puścić PHPem, bo skrypt ma się wykonać przez przeglądarke. Sięgnąłem po "expect". Bardzo prosty skrypt doit.sh wygląda następująco: Jak puszczę go w konsoli ./doit.sh wykonuje się prawidłowo...i wszystkie 6 plików wysyłane są na serwer poprawnie, następuje rozłączenie z serwerem. Problem pojawia się, gdy próbuję ów skrypt odpalić stosując Po wypluciu sobie echo $make; w przeglądarce, mogę zaobserwować że skrypt jest zatrzymywany w trakcie kopiowania 2 ostatnich plików...log kończy się na 54% przesyłania pliku... Czas przesyłania tych 6 plików to około 25sekund... Łącznie mają nieco poniżej 3mb. Dodam, że w php.ini wszystko ustawiłem dla testów na maxa (max_execution_time = 0 , max_time_limit = -1) , ale i to nic nie pomaga. Zresztą na pewno nie jest to wina tych ustawień gdyż przeglądarka prawidłowo wyświetla efekt POST'a (nie pojawia się żadnen memory limit itp)... I tutaj moje pytanie, czy może shell_exec ma jakiś swój czas wykonania skryptu? Lub co może być problemem, że w konsoli skrypt jest wykonany od A do Z, log wygenerowany jest od samego połączenia aż do bye i rozłączenia z serwerem... a log shell_exec wyświetla się do połowy..i tak też kończy pracę. P.S. Gdy skrócę ilość wysyłanych plików do 4...i jeszcze z takimi wielkościami po 50kb plik, to shell_exec wszystko ładnie pięknie kończy...czyli ewidentnie gdzieś tu chodzi o czas :/ Ten post edytował MateuszRyaN 3.01.2019, 19:12:20 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
co do PHP to widziałeś to? https://stackoverflow.com/questions/1306468...ted-private-key
Ew. Przekonwertuj sobie ten klucz na pub i priv a potem normalnie http://php.net/manual/en/function.ssh2-auth-pubkey-file.php |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 10.11.2010 Skąd: Jastrzębie Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za szybką odpowiedź, oczywiście że konwertowałem. Dostałem nawet plik pkk i musiałem posiłkować się PuttyGenem to uzyskania z tego klucza prywatnego i publicznego, ale żadną z typowych metod nie potrafiłem się połączyć.
Miałem zwrotkę taką samą jak kolega czyli ssh2_auth_pubkey_file(): Authentication failed for username using public key A jeżeli chodzi o blibliotekę phpseclib to: wypluwa nie ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
1. Sprawdzałeś czy idzie się połączyć z sftp przy uzyciu klucza publicznego? (zestaw z konwersji)
2. czy w phpseclib używałeś tego klucza pem? |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 10.11.2010 Skąd: Jastrzębie Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Przy zapodaniu
Pyta o hasło, ale po wpisaniu nie wchodzi, jakby nie poprawne hasło, ale wpuszcza normalnie.... Przy phpseclib używałem pliku privateKey.pem Dodam, że oba pliki klucza mają chmody 400 i chowny na www-data |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie wchodzi bo musisz podać klucz prywatny zamiast publiczny
![]() |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 10.11.2010 Skąd: Jastrzębie Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Dobrze Cię zrozumiałem,mam ten privateKey.pem jeszcze przekonwertować na private i public?
Czy chodzi Ci o to aby z privateKey.pem wyłuskać klucz publiczny coś typu
Konwertowania z konsoli nie próbowałem. Posiłkowałem się programikiem Putty Key Generator. Tam importowałem tego privateKey.pem'a i on wypluwa public keya typu:
Ale widzę że jest tam jeszcze opcja z tego wszystkiego eksportu do privata ponownie...więc może to o to chodzi. Czyli sugerujesz, że jeśli uda mi sie wygenrować klucz prywatny z tej pary .pem, to powinienem na niego wtedy móc wejść przez phpseclib lub ssh2_auth_pubkey_file (podając mu tego wygenerowanego jak wyżej public keya + wygenerowanego privata ? No chyba że namieszałem totalnie, to mnie popraw ![]() Temat do zamknięcia. Problem rozwiązał się po zastosowaniu phpseclib w wersji 2.0.3 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 02:08 |