Tengo un dispositivo Linux que realizará llamadas periódicas a un servidor API, por ejemplo, cada vez que se inicia el sistema. Cada vez, entonces debería autenticarse y luego hacer lo suyo.
Puedo almacenar el nombre de usuario / contraseña en un archivo .config o crear una clave pública id_rsa.pub SSH.
Mi pregunta es la siguiente: ¿Por qué se considera mejor la autorización SSH? Quiero decir que si alguien tiene acceso a mi máquina linux, entonces pueden leer el nombre de usuario / contraseña O la clave SSH y luego pueden copiar esta información en su propia computadora portátil.
¿Me estoy perdiendo algo aquí? Nota Todos estos nombres de usuario / contraseñas son generados por mí y serán cadenas aleatorias de 256 bits. Por lo tanto, el razonamiento típico de las personas que utilizan contraseñas débiles y predecibles no se aplica aquí.
Actualizar
¿Qué te parece el siguiente enfoque?
Tienes un número semilla, que será un md5 de algo. Este valor se almacena en el servidor y en cada máquina.
Ahora, durante la autenticación, un cliente enviará dos cadenas,
str1 = md5(timestamp + random());
str2 = md5(str1 + seed);
El servidor recibirá estos dos números y, en consecuencia, volverá a calcular str2 de str1 . Si str2_from_server == str2 , entonces se genera un token y se devuelve. Este token caducará con un uso o después de un período de tiempo.
Los tokens se guardarán en un par de clave / valor de tabla de str1 str2 token y nunca podrán volver a usarse (de manera realista, esta tabla se borrará de vez en cuando para que no crezca infinitamente).
¿Es esto superior / inferior a SSH?