zdalny serwer ssh na porcie innym niż 22 bez hasła


16

Zazwyczaj łączę się ze zdalnym serwerem za pomocą

ssh użytkownik@server.com -p 11000

a następnie każdemu użytkownikowi podaje hasło. Jak unikać wpisywania hasła przy każdym połączeniu za pomocą ssh?

Odpowiedzi:


23

Najpierw wstaw to ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Będziesz mógł ssh server, a następnie wpisz hasło.

Po drugie , sprawdź, ~/.ssh/czy masz pliki o nazwach id_rsai id_rsa.pub. Jeśli nie, nie masz skonfigurowanego żadnego klucza, więc musisz wygenerować parę za pomocą ssh-keygen. Możesz podać kluczom hasło lub nie. Wygenerowany plik id_rsa.pubpowinien wyglądać następująco:

ssh-rsa lotsofrandomtext użytkownik @ lokalny

Po trzecie , ssh do serwera, utwórz plik, ~/.ssh/authorized_keysjeśli nie istnieje. Następnie dołącz tutaj treść ~/.ssh/id_rsa.pubwygenerowaną wcześniej. Może to oznaczać skopiowanie zawartości pliku do schowka, a następnie otwarcie ~/.ssh/authorized_keysw edytorze tekstu i wklejenie tego.

Alternatywnie użyj polecenia ssh-copy-id server(zamień serverna nazwa w ~/.ssh/config). To zrobi to samo co powyżej. Czasami widziałem, ssh-copy-idjak utknąłem, więc nie podoba mi się to.

Powinieneś teraz być w stanie ssh za pomocą just ssh server, chyba że zdecydowałeś się chronić swój klucz prywatny za pomocą hasła. Zasadniczo, jeśli nie używasz hasła, powinieneś chronić swój klucz prywatny w inny sposób (np. Pełne szyfrowanie dysku).

Po czwarte (potrzebne tylko, jeśli chronisz swój klucz prywatny za pomocą hasła), wstaw to~/.bashrc :

start_ssh_agent() {
    # Try to use an existing agent
    save=~/.ssh-agent
    if [[ -e "$save" ]]
    then
        . "$save" > /dev/null
    fi
    # No existing agent, start a new one
    if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
    then
        ssh-agent > "$save"
        . "$save" > /dev/null
        ssh-add
    fi
}
start_ssh_agent

Dzięki temu będziesz musiał wprowadzić hasło tylko raz na rozruch komputera.


2
„Narracja” powinna również obejmować dyskusję na temat tego, jak unikać ciągłego wpisywania tego irytującego hasła. :-) ssh-agent i / lub pęku kluczy są możliwościami do rozważenia.
Faheem Mitha

1
Ponadto, jeśli nazwa użytkownika na hoście zdalnym nie jest taka sama jak nazwa użytkownika na hoście lokalnym, możesz dodać User userlinię do ~/.ssh/config.
cjm

@Faheem To miłe, ale nigdy tego nie założyłem, więc nie sądzę, żebym mógł pouczać o tym innych :)
phunehehe

@FaheemMitha proszę bardzo :)
phunehehe

Hej, lepiej późno niż wcale.
Faheem Mitha


4

Jako uzupełnienie odpowiedzi phunehehe, zobacz Przewodnik po pęku kluczy Gentoo Linux, który zawiera przewodnik po pęku kluczy . pęku kluczy używa również ssh-agent . Demon ssh-agent udostępnia hasło (staje się niedostępne, gdy umiera demon ssh-agent), ale pęku kluczy reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, cytując przewodnik.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.