Para conceder acceso remoto a un servidor virtual (VPS) o dedicado Linux, en lugar de utilizar nombre de usuario y clave, es mucho más seguro utilizar un juego de claves pública y privada que acompañando al nombre de usuario nos facilitarán el acceso cómodamente. Eso evita el riesgo de que cuando comunicamos la clave, un tercero pueda acceder a esa información y violar el sistema.
Suponiendo que tenemos habilitado acceso SSH, que viene por defecto, es el mismo usado para SFTP -por ejemplo- y que reemplaza al acceso mediante terminales telnet, hay que crear o editar el archivo authorized_keys que se encuentra bajo del directorio .ssh del directorio home del usuario al que le vamos a permitir acceso. El archivo a editar estará en:
Entramos en el sistema remoto como el mismo usuario al que vamos a autorizar, todavía usando nombre de usuario y clave para realizar las operaciones. De no existir el archivo habrá que crearlo, lo más simple es directamente abrirlo con un editor, por ejemplo:
Si tampoco existe el directorio, lo creamos con un:
Para salir del editor, pulsamos Ctrl-X y S (o Y si pregunta en inglés) y pulsamos Enter para confirmar el nombre de archivo a grabar.
Dentro del archivo insertamos en una sola línea la clave pública de quien va a tener el acceso. En nuestro caso particular, por ejemplo, es:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0+zP7//1pNKMAduYoUCZi+KIz1HAFpoxHuo+WwpIL6mQMgiS/iYuGzV7/fEdkqzwZth0GBQm163g5EQQ6DeJKxuFA3e7DqRBF/gvI/v0KkPJEquoDg7IW3o7LbbhR+qspHePnWLSFNxUokAYxU9nYfAfBn6kReBnmemmUFmK0Fh46td1iu9WH+iHIvw6RDS8RKZTJzSeIgmExiWS+UpyTDnNyzizbvzqA6ppSmssBAhu4rbDmjmluK8XN2YJTiBKDKIjjN9cfqHqlVUasuTxOu9qVBR+EIJFdaaqpuIITYSoxT50lNAXt1EY8I4O1IOGbmd3ofYEw9huK9disnc+EQ== tecnicoweb
Los permisos que requiere el archivo y el directorio son importantes, nadie más que el usuario en cuestión tiene que tener acceso a crear nuevos archivos ni a modificar el archivo. De estar configurados de forma insegura, el servidor SSH se negará a proporcionar el acceso. Los permisos más habituales que cumplen esos requisitos, si no están ya de este modo, los podemos aplicar fácilmente con:
chmod 600 ~/.ssh/authorized_keys
Todas estas operaciones se podrían realizar también mediante FTP si tenemos configurado que se muestran los directorios ocultos -los que tienen un nombre empieza con un punto- como el el caso de .ssh.
Como ventaja adicional, mencionar que la comunicación SSH está cifrada de extremo a extremo, esto es, entre servidor y cliente. Este protocolo nos permite remplazar al inseguro FTP y sobre él podemos utilizar también comandos como rsync (sincronización remota) o scp (copia de archivos segura).