Główna » jak » Jak zdalnie kopiować pliki przez SSH bez podawania hasła

    Jak zdalnie kopiować pliki przez SSH bez podawania hasła

    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 do skryptów!

    Ten proces działa na systemach Linux i Mac OS pod warunkiem, że są one poprawnie skonfigurowane pod kątem dostępu przez SSH. Jeśli używasz systemu Windows, możesz użyć Cygwin, aby uzyskać funkcjonalność podobną do Linuksa, a przy odrobinie modyfikowania, SSH również będzie działał.

    Kopiowanie plików przez 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 części zdalnej. Kiedy adresujesz zdalny plik, musisz to zrobić w następujący sposób:

    użytkownik @ serwer: ścieżka / do / plik

    Serwer może być adresem URL lub adresem IP. Po nim 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 "Pulpit" 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 kart nie zawsze działa, więc pomocne jest posiadanie innego terminala z uruchomioną sesją SSH, dzięki czemu wiesz, gdzie umieścić rzeczy.

    SSH i SCP bez haseł

    Bezpieczna kopia jest świetna. Możesz umieścić go w skryptach 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, to naprawdę wielki problem z wpisaniem hasła 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 chcesz dodać inny klucz publiczny do swojego konta na tym serwerze, skopiowałbyś zawartość drugiego pliku id_rsa.pub do nowego wiersza w istniejącym pliku authorized_keys2.

    Kwestie bezpieczeństwa

    Czy nie jest to mniej bezpieczne niż hasło??

    W sensie praktycznym, niezupełnie. Generowany 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 dość 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 prywatny, ale potrzebuje 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 przy pierwszym SSH / SCP musisz podać swoje hasło, ale wszystkie kolejne czynności tego nie wymagają. Po wylogowaniu się z komputera (nie zdalnym) lub zamknięciu okna terminala, musisz wprowadzić je ponownie. W ten sposób nie poświęcasz zbyt dużo uwagi bezpieczeństwu, 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 prywatne klucze 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!