Tengo dos computadoras portátiles (Host A y Host C) con direcciones IP dinámicas y una computadora de escritorio (Host B), todas las cuales ejecutan Linux (Ubuntu). En este momento tengo todo configurado para poder acceder al Host A desde el Host C de la siguiente manera. Tengo un túnel ssh de A a C con el comando en hostA del formulario
autossh -NR 10023:localhost:22 [email protected]
Estoy usando un par de claves para que el comando autossh realmente pueda suceder.
Luego puedo enviar ssh a B desde C y luego conectarme a a con
ssh -p 10023 localhost
Me solicita una contraseña y puedo ingresar. No hay problemas.
Sin embargo, me gustaría mejorar la seguridad en A, por lo que se requiere una clave para iniciar sesión. Así que genero ssh-keygen con un par de claves en HostB, le doy un nombre a mi clave customkey_rsa y le doy una contraseña. Entonces customkey_rsa.pub es la clave pública. No puedo hacer que ssh-copy-id funcione con este túnel, así que simplemente inicio sesión en A desde C y hago scp sobre customkey_rsa.pub desde el Host B. Luego agrego la clave con
cd .ssh & cat customkey_rsa.pub >> authorized_keys
Sin embargo, ahora, cuando intento iniciar sesión, todavía aparece el mensaje de contraseña. De hecho, parece que llega al punto de probar la clave, pero de alguna manera se da por vencido en el último segundo, como se muestra a continuación.
desde B
ssh -v -i customkey_rsa -p 10023 localhost
da
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Connecting to localhost [127.0.0.1] port 10023.
debug1: Connection established.
debug1: identity file customkey_rsa type 1
debug1: identity file customkey_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2 pat OpenSSH_6.6.1* compat 0x04000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr [email protected] none
debug1: kex: client->server aes128-ctr [email protected] none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA (redacted)
debug1: Host '[localhost]:10023' is known and matches the ECDSA host key.
debug1: Found key in /home/ohnoplus/.ssh/known_hosts:2
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: customkey_rsa
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
ohnoplus@localhost's password:
Tenga en cuenta que los permisos para ~/.ssh
el Host A son 700
y para .ssh/authorized_keys
es600
.
Entonces mi pregunta. ¿Por qué no funcionó y cómo puedo solucionarlo?
Cosas que he visto que no han ayudado:
Trabajé en la lista de sugerencias. Los permisos están configurados correctamente en mi sistema y las otras soluciones no se aplican. ¿Por qué sigo apareciendo una solicitud de contraseña con ssh con autenticación de clave pública?
Similar, pero no se proporciona ninguna solución: ssh con clave rsa pide contraseña
No tengo un archivo "authorized_keys2" ssh solicita una contraseña a pesar de .ssh/authorized_keys
Respuesta1
Necesitas agregar:
PasswordAuthentication no
a su sshd_config (esa es la configuración del servidor)