SSH to ratownik, gdy musisz zdalnie zarządzać komputerem, ale czy wiesz, że możesz także przesyłać i pobierać pliki? Używając kluczy SSH, możesz pominąć wpisywanie haseł i używać go dla skryptów!
Ten proces działa w systemach Linux i Mac OS, pod warunkiem, że są odpowiednio skonfigurowane pod kątem dostępu przez SSH. Jeśli korzystasz z systemu Windows, możesz użyć Cygwin, aby uzyskać funkcjonalność podobną do Linuksa, a przy odrobinie podkręcania uruchomi się także SSH.
Bezpieczne kopiowanie jest naprawdę użytecznym poleceniem i jest naprawdę łatwe w użyciu. Podstawowy format polecenia jest następujący:
scp [opcje] original_file destination_file
Największym kickerem jest formatowanie zdalnej części. Kiedy adresujesz zdalny plik, musisz zrobić to w następujący sposób:
użytkownik @ serwer: ścieżka / do / plik
Serwer może być adresem URL lub adresem IP. Następuje dwukropek, a następnie ścieżka do pliku lub folderu. Spójrzmy na przykład.
scp -P 40050 Desktop / url.txt [email protected]: ~ / Desktop / url.txt
To polecenie zawiera flagę [-P] (pamiętaj, że jest to duże P). To pozwala mi określić numer portu zamiast domyślnego 22. Jest to konieczne ze względu na sposób, w jaki skonfigurowałem swój system.
Następnie mój oryginalny plik to "url.txt", który znajduje się w katalogu o nazwie "Desktop". Plik docelowy znajduje się w "~ / Desktop / url.txt", który jest taki sam jak "/user/yatri/Desktop/url.txt". To polecenie jest uruchamiane przez użytkownika "yatri" na komputerze zdalnym "192.168.1.50".
Co zrobić, jeśli chcesz zrobić coś odwrotnego? W podobny sposób można kopiować pliki ze zdalnego serwera.
Tutaj skopiowałem plik z folderu "~ / Desktop /" komputera zdalnego do folderu "Desktop" mojego komputera.
Aby skopiować całe katalogi, musisz użyć flagi [-r] (pamiętaj, że jest to małe litery r).
Możesz także łączyć flagi. Zamiast
scp -P -r ...
Możesz po prostu zrobić
scp -Pr ...
Najtrudniejszą częścią jest to, że uzupełnianie tabulatorów nie zawsze działa, więc pomocne jest posiadanie innego terminala z uruchomioną sesją SSH, abyś wiedział, gdzie umieścić rzeczy.
Bezpieczna kopia jest świetna. Możesz umieścić go w skrypcie i zlecić tworzenie kopii zapasowych na odległych komputerach. Problem polega na tym, że nie zawsze jesteś w pobliżu, aby wprowadzić hasło. I, bądźmy szczerzy, bardzo trudno jest wprowadzić hasło na zdalny komputer, do którego oczywiście masz dostęp przez cały czas.
Cóż, możemy obejść się używając haseł przy użyciu plików kluczy. Możemy sprawić, że komputer wygeneruje dwa kluczowe pliki - jeden publiczny, który należy do zdalnego serwera, i jeden prywatny, który jest na twoim komputerze i musi być bezpieczny - a te będą używane zamiast hasła. Dość wygodne, prawda?
Na komputerze wpisz następujące polecenie:
ssh-keygen -t rsa
Spowoduje to wygenerowanie dwóch kluczy i umieszczenie ich w:
~ / .ssh /
z nazwami "id_rsa" dla twojego klucza prywatnego i "id_rsa.pub" dla Twojego klucza publicznego.
Po wprowadzeniu polecenia pojawi się pytanie, gdzie zapisać klucz. Możesz nacisnąć Enter, aby użyć wyżej wymienionych wartości domyślnych.
Następnie pojawi się prośba o wpisanie hasła. Naciśnij Enter, aby pozostawić to pole puste, a następnie zrób to ponownie, gdy prosi o potwierdzenie. Następnym krokiem jest skopiowanie pliku klucza publicznego do komputera zdalnego. Możesz użyć scp, aby to zrobić:
Miejsce docelowe klucza publicznego znajduje się na serwerze zdalnym w następującym pliku:
~ / .ssh / authorized_keys2
Kolejne klucze publiczne mogą być dołączone do tego pliku, podobnie jak plik ~ / .ssh / known_hosts. Oznacza to, że jeśli chciałbyś dodać inny klucz publiczny do swojego konta na tym serwerze, skopiowałbyś zawartość drugiego pliku id_rsa.pub do nowego wiersza na istniejącym pliku authorized_keys2.
Czy to nie jest mniej bezpieczne niż hasło?
W sensie praktycznym, niezupełnie. Wygenerowany klucz prywatny jest przechowywany na komputerze, z którego korzystasz i nigdy nie jest przesyłany, a nawet weryfikowany. Ten klucz prywatny TYLKO pasuje do tego JEDNEGO klucza publicznego, a połączenie musi zostać nawiązane z komputera z kluczem prywatnym. RSA jest całkiem bezpieczny i domyślnie używa 2048 bitów.
W zasadzie jest to podobne do użycia hasła. Jeśli ktoś zna twoje hasło, twoje bezpieczeństwo zniknie z okna. Jeśli ktoś ma twój prywatny plik klucza, ochrona zostanie utracona na dowolnym komputerze, który ma pasujący klucz publiczny, ale oni potrzebują dostępu do komputera, aby go uzyskać.
Czy to może być bardziej bezpieczne?
Możesz połączyć hasło z plikami kluczy. Wykonaj powyższe kroki, ale wprowadź silne hasło. Teraz, gdy łączysz się przez SSH lub używasz SCP, potrzebujesz odpowiedniego pliku klucza prywatnego jak również właściwe hasło.
Gdy raz wprowadzisz hasło, nie będziesz ponownie o to pytany, dopóki nie zamkniesz sesji. Oznacza to, że za pierwszym razem, gdy używasz SSH / SCP, musisz podać swoje hasło, ale wszystkie kolejne czynności nie będą tego wymagać. Po wylogowaniu się z komputera (nie zdalnym) lub zamknięciu okna terminala, musisz wprowadzić je ponownie. W ten sposób nie poświęcasz tak naprawdę bezpieczeństwa, ale nie jesteś też nękany hasłami przez cały czas.
Czy mogę ponownie użyć pary kluczy publiczny / prywatny?
To naprawdę zły pomysł. Jeśli ktoś znajdzie twoje hasło i użyjesz tego samego hasła do wszystkich swoich kont, teraz będzie miał dostęp do wszystkich tych kont. Podobnie twój prywatny plik klucza jest również super-tajny i ważny. (Aby uzyskać więcej informacji, zobacz How To Recover After Your Email Password has Compromised)
Najlepiej utworzyć nowe pary kluczy dla każdego komputera i konta, które chcesz połączyć. W ten sposób, jeśli jakikolwiek twój prywatny klucz zostanie w jakiś sposób złapany, wtedy złamiesz tylko jedno konto na jednym zdalnym komputerze.
Ważne jest również, aby pamiętać, że wszystkie klucze prywatne są przechowywane w tym samym miejscu: w ~ / .ssh / na komputerze, możesz użyć TrueCrypt do utworzenia bezpiecznego, zaszyfrowanego kontenera, a następnie utworzyć dowiązania symboliczne w ~ / .ssh / katalog. W zależności od tego, co robię, używam tej super-paranoicznej, super bezpiecznej metody, aby uspokoić umysł.
Czy używałeś SCP w jakimkolwiek skrypcie? Czy używasz plików kluczy zamiast haseł? Podziel się swoją wiedzą z innymi czytelnikami w komentarzach!