Przeczytałem dokumentację net-ssh i wciąż jestem zakłopotany. Potrafię uwierzytelniać ręcznie (używając ssh -i ...), a także umieszczając klucz w pliku i używając parametru: keys. Jednak nie chcę używać parametru: keys, chcę użyć parametru: key_data. Czy ktoś może podać przykład pracy? Z jakiegoś powodu, bezpośrednie podawanie łańcucha do: key_data nie działa i daje błąd: "Ani klawisz PUB, ani klucz PRIV :: zagnieżdżony błąd asn1". Oczywiście googlowałem i to zasadniczo mówi mi, żebym upewnił się, że klucz jest w formacie PEM. I, oczywiście, jest. Jakieś pomysły? W razie potrzeby mogę podać bardziej szczegółowe informacje ...Przy użyciu Ruby i net-ssh, w jaki sposób uwierzytelnić przy użyciu parametru key_data przez Net :: SSH.start?
Odpowiedz
Widzę to pytanie w dość starym, ale i tak mam zamiar dać ci odpowiedź na wszelki wypadek, ponieważ miałem ten sam problem i właśnie go rozwiązałem.
W poniższym kodzie zauważ, że ciąg zawierający klucz RSA nie jest nigdzie wcięty. Druga linia klucza nie ma w nim żadnej wiodącej przestrzeni. TextMate umieścił to tam, kiedy wkleiłem klucz. Usunąłem go i zadziałało jak czar.
#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
HOST = '172.20.0.31'
USER = 'root'
KEYS = [ "-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAqccvUza8FCinI4X8HSiXwIqQN6TGvcNBJnjPqGJxlstq1IfU
kFa3S9eJl+CBkyjfvJ5ggdLN0S2EuGWwc/bdE3LKOWX8F15tFP0=
-----END RSA PRIVATE KEY-----" ]
Net::SSH.start(HOST, USER, :key_data => KEYS, :keys_only => TRUE) do|ssh|
result = ssh.exec!('ls')
puts result
end
Dodaję trochę więcej informacji odkryłem sobie po kopanie wokół biblioteki ...
Od pkt 2.9.2, jeśli zamiarem jest użycie klucza dostarczonego w key_data, ty musi również określić pusty zestaw kluczy przed załadowaniem twoich danych key_data, lub załaduje niektóre klucze domyślne.
W moim przypadku jeden z plików tożsamości, który próbował załadować, był chroniony hasłem, więc poprosił mnie o podanie hasła, choć moim zamiarem było nie używać tego pliku identyfikatora.
Korzystając z przykładu powyżej, w pkt 2.9.2, można uzyskać ten sam efekt, robiąc coś takiego:
#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
HOST = '172.20.0.31'
USER = 'root'
KEYS = [ "-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAqccvUza8FCinI4X8HSiXwIqQN6TGvcNBJnjPqGJxlstq1IfU
kFa3S9eJl+CBkyjfvJ5ggdLN0S2EuGWwc/bdE3LKOWX8F15tFP0=
-----END RSA PRIVATE KEY-----" ]
Net::SSH.start(HOST, USER, :keys => [], :key_data => KEYS, :keys_only => TRUE) do|ssh|
result = ssh.exec!('ls')
puts result
end
- 1. W jaki sposób uwierzytelnić zaufaną aplikację przy użyciu OAUTH 2
- 2. Ruby przy użyciu nazw/moduł
- 3. W jaki sposób programowo uwierzytelniać użytkownika przy użyciu Spring Security przy użyciu obiektu DaoAuthenticationProvider
- 4. W jaki sposób można uwierzytelnić przy użyciu klienta Jersey na serwerze obsługującym JAAS?
- 5. Błąd w odwzorowującym przy użyciu nazwy parametru
- 6. Przy użyciu parametru o typie szablonu
- 7. Generowanie kodu przy użyciu .net
- 8. W jaki sposób deserializować tablicę wyliczeń przy użyciu Json.Net?
- 9. podobne oświadczenie dla npgsql przy użyciu parametru
- 10. Typ parametru funkcji przy użyciu dekltype
- 11. Jak uwierzytelnić użytkownika w ActiveDirectory przy użyciu powershell
- 12. PropertyInfo.GetValue() - w jaki sposób indeksować do ogólnego parametru przy użyciu odbicie w C#?
- 13. Wymyślić uwierzytelnianie przy użyciu cURL
- 14. przy użyciu MultipartFormDataStreamProvider i ReadAsMultipartAsync
- 15. Klasa zerowa przy użyciu wtrysku Ruby
- 16. Unity/Firebase Jak uwierzytelnić się przy użyciu Google?
- 17. ZeroMQ DllNotFoundException przy użyciu powiązań .Net
- 18. zalogowaniu i przy użyciu ciasteczek w pycurl
- 19. Czy można ponownie uruchomić komputer przy użyciu "czystego" .NET i * bez * przy użyciu p/invoke?
- 20. Przesyłanie plików przez FTPS (SSL/TLS) przy użyciu C# .Net
- 21. W administratorze Django, w jaki sposób mogę zwiększyć szerokość widżetu pola ManyToMany przy użyciu parametru filter_horizontal?
- 22. W jaki sposób wypełnić dwuwymiarowy szyk przy użyciu szumu perlinowego?
- 23. W jaki sposób zaimplementować aplikację VOIP przy użyciu pakietu android.net.rtp
- 24. Budowanie aplikacji czatu przy użyciu Ruby
- 25. Bezpieczne przechowywanie tokenu uwierzytelniania przy użyciu .NET
- 26. W jaki sposób deserializować macierz JSON przy użyciu Newtonsoft.Json
- 27. W jaki sposób Eclipse wdraża aplikację internetową przy użyciu Tomcat?
- 28. W jaki sposób "przy użyciu std :: swap" włączyć ADL?
- 29. S3 przy użyciu boto i SigV4 - brak parametru hosta
- 30. Trwałe przechowywanie zaszyfrowanych danych przy użyciu .Net
coraz '/usr/share/ruby/2.0/socket.rb:232:in 'getaddrinfo': brak niejawnej konwersji Array na String (TypeError) ' – sixty4bit