server remoto ssh su una porta diversa da 22 senza password


16

Di solito mi collego al server remoto con

ssh user@server.com -p 11000

e quindi dare la password ogni volta per l'utente. Come devo evitare di inserire la password ogni volta che mi connetto usando ssh?

Risposte:


23

Innanzitutto , inseriscilo in ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Sarai in grado di ssh server, quindi digitare la password.

Secondo , controlla ~/.ssh/per vedere se hai dei file con nome id_rsae id_rsa.pub. In caso contrario, non è stata impostata alcuna chiave, quindi è necessario generare una coppia utilizzando ssh-keygen. È possibile assegnare una password alle chiavi o meno. Il file generato id_rsa.pubdovrebbe essere simile al seguente:

ssh-rsa lotsofrandomtext utente @ local

In terzo luogo , ssh sul server, crea il file ~/.ssh/authorized_keysse non esiste. Quindi aggiungi il contenuto di quello ~/.ssh/id_rsa.pubche hai generato prima qui. Questo potrebbe significare copiare il contenuto del file negli appunti, quindi aprirlo ~/.ssh/authorized_keysin un editor di testo e incollare la cosa.

In alternativa, utilizzare il comando ssh-copy-id server(sostituire servercon il nome in ~/.ssh/config). Questo farà la stessa cosa di cui sopra. A volte ho visto ssh-copy-idrimanere bloccato, quindi non mi piace molto.

Ora dovresti essere in grado di ssh con just ssh server, a meno che tu non abbia scelto di proteggere la tua chiave privata con una passphrase. In genere, se non si utilizza una passphrase, è necessario proteggere la chiave privata con altri mezzi (ad es. Crittografia del disco completo).

Quarto (necessario solo se proteggi la tua chiave privata con una passphrase), inseriscilo in~/.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

Con questo, dovrai solo inserire la passphrase una volta all'avvio del computer.


2
La "narrativa" dovrebbe anche includere una discussione su come evitare di scrivere quella fastidiosa passphrase per tutto il tempo. :-) ssh-agent e / o keychain sono possibilità da considerare.
Faheem Mitha,

1
Inoltre, se il tuo nome utente sull'host remoto non è uguale al tuo nome utente sull'host locale, puoi aggiungere una User userlinea a ~/.ssh/config.
cjm

@Faheem È bello, ma non ho mai creato una cosa del genere, quindi non credo di essere in grado di istruire gli altri su di esso :)
phunehehe

@FaheemMitha eccoti :)
phunehehe

Ehi, meglio tardi che mai.
Faheem Mitha,


4

Come supplemento alla risposta di phunehehe, consulta la Guida ai portachiavi di Gentoo Linux per una guida al portachiavi . il portachiavi usa anche ssh-agent . Il demone ssh-agent rende disponibile la passphrase (diventa non disponibile quando il demone ssh-agent muore) ma portachiavi reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, per citare la guida.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.