servidor remoto ssh en algún puerto que no sea 22 sin contraseña

16

Por lo general, me estoy conectando al servidor remoto con

ssh [email protected] -p 11000

y luego dar la contraseña cada vez para el usuario. ¿Cómo debo evitar ingresar la contraseña cada vez que me conecto usando ssh?

Prabesh Shrestha
fuente

Respuestas:

23

Primero , pon esto en ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Podrá ssh server, luego escriba la contraseña.

En segundo lugar , verifique ~/.ssh/si tiene archivos con nombre id_rsay id_rsa.pub. Si no, no tiene ninguna clave configurada, por lo que debe generar un par usando ssh-keygen. Puede dar a las claves una contraseña o no. El archivo generado id_rsa.pubdebería verse así:

ssh-rsa lotsofrandomtext usuario @ local

En tercer lugar , ssh para el servidor, cree el archivo ~/.ssh/authorized_keyssi no existe. Luego agregue el contenido del ~/.ssh/id_rsa.pubque generó anteriormente aquí. Esto podría significar copiar el contenido del archivo en su portapapeles, luego abrirlo ~/.ssh/authorized_keysen un editor de texto y pegarlo.

Alternativamente, use el comando ssh-copy-id server(reemplace servercon el nombre en ~/.ssh/config). Esto hará lo mismo que arriba. A veces he visto ssh-copy-idque me atasco, así que realmente no me gusta.

Ahora debería poder usar ssh con solo ssh server, a menos que haya elegido proteger su clave privada con una frase de contraseña. En general, si no utiliza una frase de contraseña, debe proteger su clave privada por otros medios (por ejemplo, cifrado de disco completo).

Cuarto (solo es necesario si protege su clave privada con una frase de contraseña), ponga esto en~/.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 esto, solo necesitará ingresar la frase de contraseña una vez por arranque de la computadora.

phunehehe
fuente
2
La 'narrativa' también debe incluir una discusión sobre cómo evitar escribir esa frase de contraseña molesta todo el tiempo. :-) ssh-agent y / o keychain son posibilidades a considerar.
Faheem Mitha
1
Además, si su nombre de usuario en el host remoto no es el mismo que su nombre de usuario en el host local, puede agregar una User userlínea a ~/.ssh/config.
cjm
@Faheem Eso es bueno, pero nunca he configurado tal cosa, así que no creo que esté en condiciones de instruir a otros al respecto :)
phunehehe
@FaheemMitha allí tienes :)
phunehehe
Oye, más vale tarde que nunca.
Faheem Mitha
7

Vaya a la autenticación basada en claves .

9000
fuente
Gracias por la sugerencia . Había estado mirando los foros pero tenía problemas con el puerto ( 11000 en lugar de 22 ). Con ssh -P 11000pude copiar con ssh. Muchas gracias.
Prabesh Shrestha
4

Como suplemento a la respuesta de phunehehe, consulte la Guía de llavero Gentoo Linux para obtener una guía sobre el llavero . el llavero también usa ssh-agent . El demonio ssh-agent hace que la frase de contraseña esté disponible (deja de estar disponible cuando el demonio ssh-agent muere) pero llavero reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, para citar la guía.

Faheem Mitha
fuente