jueves, 17 de marzo de 2022

¿Cómo utilizo TOPS-20 "TWENEX"?

Tutorial de TWENEX

Indudablemente acceder remotamente a un sistema operativo nos salva de tener que instalarlo en nuestro propia máquina. Por tanto, os instruiré gracuas a las facilidades del Proyecto TWENBX.ORG. Indudablemente que será de suma utilidad del Manual de Usuario de TOPS-20.

se puede acceder como usuario invitado desde Linux utilizando Shell Seguro (SSH), mediante:

ssh twenex@sdf.org

Al establecerse en enlace se presentará la pantalla de registro en la máquina TOAD-2 “KANKAN” de TWENEX.ORG: 

No bien recibamos en el terminal el prompt de sistema@”, podrás ingresar como “usuario invitado nuevo”. Para ello introduce NEW seguido de la tecla INTRO. Cuando se te solicite la contraseña (“password?”) ingresa también NEW.

Salir del sistema TWENEX

Podrás usar KJOB para salir del sistema TWENEX.

Podremos solicitar la creación de una cuenta usuario registrado de TWENEX en http://www.twenex.org/mkacct/, proveyendo el Nombre de Usuario deseado (llamado "LOGIN") - una casilla de correo electrónico válida - y un nombre completo. Recibirás un correo electrónico indicando el alta de tu LOGIN, y te será proporcionada una contraseña pasavante. Una vez cumplimentado esto, al acceder a TWENEX.ORG y recibir el prompt @ podremos indicarlos.

Para cambiar la contraseña pasavante provista por una contraseña propia habrán de utilizar el comando
SET DIRECTORY PASSWORD <LOGIN>

…donde LOGIN habrá de ser reemplazado por tu nombre de usuario (debes conservar el uso de <>). Deben evitarse letras acentuadas, los espacios y y eñes en la contraseña.

En TOPS-20 son importantes los caracteres de control para manejar el flujo de datos a tu terminal.

Control Resultado
CTRL-S detiene (pausa) la salida de la terminal.
CTRL-Q continúa con la salida en la terminal.
CTRL-O ignora la salida de la terminal
CTRL-U borra lo ingresado.
CTRL-C sale de un trabajo.
CTRL-F autocompleta (intente <ESC> también)
CTRL-T Presenta el Status del trabajo
CTRL-\ Cuando ejecute el comando 'LOGOUT' use esto para cerrar la sesión TELNET.

El intérpretes de comandos de nivel usuario de TOPS-20 se llama EXEC. Al arrancar TOPS-20, este correrá ficheros de autoejecución localizados en vuestro directorio de usuario. El fichero básico es LOGIN.CMD.

El prompt del sistema TWENEX estará configurado como:

[KANKAN] PUBLIC:<~>@ 

Los comandos más simples no son interactivos; se trata de programas que entregan un resultado directo en la terminal. Veamos algunos:

En TOPS-20 podrá utilizarse el programa TYPE que cumple similar función al cat de GNU: presentar en pantalla el contenido de un fichero. Por ejemplo:

TYPE LOGIN.CMD

mostrará el contenido de este fichero por lotes de sistema - en el cual el ; sirve para comentar, de la misma forma que se utiliza el # en Unix. Este podría ser el siguiente:

Como TOPS-20 es un sistema multiusuario a tiempo compartido y en línea, podrás usar SYSTAT para ver quién se encuentra conectado.

TWENEX podría llenar la pantalla de vuestra terminal con la información solicitada. Al llenar la pantalla, podréis continuar la presentación de más información con Ctrl+q. Este comportamiento es un remanente de la época de las teletipos, donde se imprimía un poco y era posible cancelarlo. De momento la dejaremos así, luego podremos alterar este proceder según convenga.

Podremos emplear el comando DAYTIME para ver la fecha del Reloj de Tiempo Real (RTC).

Autocompletado con Esc

EXEC ha sido influyente por contar con reconocimiento de tecla Escape, similar a la tecla Tabs en Bash. Podrán utilizarla para autocompletar o presentar solicitudes (“noise words”) de los comandos parcialmente escritos. Imaginemos desear ingresar el extenso comando INFORMATION (ABOUT) MONITOR-STATISTICS, para lo cual podríamos escribir:

infor tecla ESCAPE mon tecla ESCAPE

…EXEC terminaría "de tipear lo necesario". Tras comprobar los propuesto, produciremos la introducción de la orden con la tecla Intro

Ayuda con ?

Otra opción recordada de EXEC fue su operador del signo de interrogación ?. Al presionar la tecla ? (no es necesario oprimir ENTER con ella), EXEC devolverá la ayuda o bien las opciones o sufijos que disponibles para el comando TWENEX propuesto.

Por ejemplo, la opción de largo de la terminal permite identificar el largo de las líneas de la termimal antes de que pause automáticamente. Usualmente estas eran 24 líneas.

terminal (FEATURE OR TYPE) page (MODE) ?

Las palabras entre paréntesis (FEATURE OR TYPE, MODE) eran palabras de guía, y se hayan incorporadas en el intérprete para producir su autocompletado presionando la tecla Escape.

Por ejemplo, para el caso anterior, podrás hacerlo escribiendo:

TER [ESCAPE] page [ESCAPE] ?

Será adecuado conocer el equivalente a carpetas o directorios: la “Estructura” de TOPS-20. Dispongamos de comandos no interactivos para ver cuántas “páginas” (PAGES) de memoria estamos utilizando en nuestro almacenamiento de usuario:

INFORMATION (ABOUT) DISK-USAGE (OR DIRECTORY) <usuario>

En TOPS-20 el directorio se denomina “STRUCTURE” (estructura), y al iniciar sesión en TWENEX seremos localizados del directorio de usuario dentro de la estructura PUBLIC: (PUBLIC:<usuario>).

El sistema de archivos de TOPS-20 suporta versionado de ficheros, y cuenta con dos niveles de borrado de archivos (similar a una “papelera de reciclaje”), funcionalidad de la cual UNIX carece. De esta forma, los nombres de archivo de TOPS-20 cuentan con tres componentes:

NOMBRE.EXTENSIÓN.VERSIÓN

Utiliza el comando DIR para listar directorios, de manera similar al ls de UNIX. También contaremos con una opción más completa, VDIR o VDIRECTORY. Podrás utilizar comodines * como atajos para abarcar “todo”. Si decides introducir el comando:

@directory PS:<USUARIO>*.*.*

…TWENEX listará todos los archivos, con todas las extensiones, y todas las versiones que se encuentren dentro del directorio de usuario MENGANO. Si sólo le ingresa un *.* y omite el comodín * referido a la versión, entonces EXEC listará únicamente generación más actual de TODOS los archivos.

Trabajos en TOPS-20

TWENEX contó con una destacable funcionalidad para gestionar la realización de tareas de cómputo (Trabajos o “JOBS”). Aprendamos de ellos.

Utiliza ahora el comando FINGER para consultar el LOGIN y nombre de los usuarios conectados, el número de trabajo que estén ejecutando (“Job”), y el número de terminal asignada (TTY) conectada en el sistema compartido, además de otras informaciones. 

Esta información es muy útil para operar en un sistema de cómputo de tiempo compartido como TWENEX.

En TOPS-20 es posible desconectar virtualmente la terminal teletipo simulada de un trabajo, y podríamos conectarla a otro trabajo, incluso de otro usuario si sabemos su contraseña. Para desconectar la terminal emplearemos Ctrl+c y luego el comando DETACH.

Esto deja el trabajo activo pero le “desconecta” la terminal, como si de un conmutador telefónico antiguo se tratara. Esto te permitirá iniciar un trabajo distinto en una sub-instancia de EXEC.

Para volver a “conectar” la terminal al trabajo que quedó “DETACH” (desconectado), usamos el comando FINGER para consultar el número de trabajo (JOB) del usuario, y luego empleamos ATTACH con la sintaxis del usuario y del numero de trabajo. Por ejemplo:

ATTACH usuario 32

...“reconectará” la terminal para “controlar” lo que hace el usuario peron con el trabajo número 32.

Este proceder será útil para procesos largos (como compilaciones), donde podremos iniciar el proceso, DETACH la terminal, y volver luego cuando la termine, o hacer algo mientras ello sucede. 

Podrás utilizar el comando KILLJOB y el número de trabajo para eliminar un trabajo suelto.

TOPS-20 cuenta con la posibilidad de “elevar” o “descender” trabajos, lo que equivale a enviar trabajos al segundo plano o elevarlos a primer plano (de forma similar a los comandos **bg** y **fg** de UNIX).

Para abandonar un trabajo debemos presionar Ctrl+c. Esto “descenderá” el trabajo actual y ejecutará un intérprete EXEC nuevo. Para volver a “mandar arriba” o elevar el trabajo anterior para continuar utilizándolo, en lugar del comando fg, en TOPS-20 usaremos el comando POP. Para “mandar abajo” y pasarlo a segundo plano (bg), usaremos el comando PUSH.

  • fg=POP
  • bg=PUSH

Además de los comandos no interactivos, podrás utilizar aplicaciones más complejas en el EXEC. Estos reciben la jerga de “Subsystem” o subsistema, pero son esencialmente programas interactivos ejecutables, tal como las aplicaciones tradicionales de UNIX.

Utiliza el subsistema MM para enviar y recibir correo electrónico. Podrás recibir correo desde el mundo exterior. Es muy recomendable usar texto plano para los envíos. El prompt del subsistema de correo es:

MM>
Introduce el comando MAIL para redactar un mensaje. Se te presentará el indicador TO: (“para:”), al cual debes introducir la dirección de correo según el siguiente criterio.
  • Si deseas enviar correo electrónico interno dentro del sistema compartido TWENEX (que cuenta con la dirección usuario@twenex.org), simplemente ingresa usuario@twenex.org (también funciona el host @kankan.twenex.org).
  • Si deseas enviar correo electrónico a direcciones sitas en @sdf.org, envíalas a usuario@sdf.org.
  • Para enviar desde TWENEX.ORG al mundo exterior a través de internet, debes reenviarlas a través del servidor de correo sdf.org intermediando el signo %. Por ejemplo, para enviar un correo a un usuario@texto-plano.xyz, utiliza usuario%texto-plano.xyz@sdf.org

El funcionamiento es autoexplicativo. El editor de líneas del correo nos permitirá escribirlo, y cesar la edición con Ctrl+z.


 

Una vez escrito el correo finaliza la edición del mismo con Ctrl+z, y quedará en la bandeja de salida (“Qued”). Para proceder al envío del correo, ingresa el comando SEND.

Leer el correo

En el subsistema MM, usa el comando HEADERS ALL para ver todos los correos recibidos en tu bandeja de entrada, y usa el comando TYPE seguido por el número del correo que desees leer, o bien usa TYPE NEW para leer los correos nuevos. Podrás responderlo con REPLY

Tras la edición de la respuesta, quedarás en el prompt de envío “S>”. Para producir el envío, ingresa el comando SEND.
S> SEND

Podrías borrar el correo usando DELETE 1, y luego expungar la papelera con EXPUNGE.

Ten en cuenta que la dirección TWENEX.ORG no es demasiado compatible. Podría tener problemas para utilizar MIME64, HTML y otros tipos de correo electrónico. Privilegia el uso de texto plano.

BBOARD

Es una cartelera electrónica interna al sistema TWENEX, en forma de bandejas para el subsistema de correo. Ingresa al subsistema de correo:

MM

y solicita la carpeta BBOARD:

BBOARD

Verás que hay distintos tablones.

Editores en TWENEX

En TWENEX podrán encontrarse múltiples editores de texto. El editor por defecto es Emacs, pero también tendremos a Vi, y los más antiguos SOS y TECO.

Antes de utilizar el editor visual vi habrán de activar la terminal en modo ANSI con el comando

TERM ANSI

y luego ejecutar el editor con

vi

SOS es el editor de líneas Son Of Stopgap. Para obtener ayuda de un comando tipea “H,<nombre del comando>”. Por ejemplo, la información en todos los comandos de alteración está disponible ingresando “H,A”.

Comando Resultado
A (Alter) Edición entrelíneas
B (Begin) Va al principio del fichero
BP(Begin Page) GVa al principio de la pág
C (Copy) Copia texto
CC(Co-Copy) Copia de coedición
CT(Co-Transfer) Mueve texto de coedición
CX(Co-edit) Comienza/conmuta coedición
D (Delete) Borra texto
E (Exit) Sale del editor
F (Find) Busca una cadena
G (Go) Sale y corre un programa
H (Help) Presenta la ayuda
I (Insert) Inserta nuevo texto
J (Join) Une líneas
JC(Justify Centered) Centra el texto
JL(Justify Left) Justif izq
JR(Justify Right) Justif der
JU(Justify) Fully justificado letras
JW(Justify Word) Justifica palabras
K (Kill) Borra marcas de pág
L (List) Lista las líneas en LPT:
M (Mark) Inserta marca de pág
N (Number) Renumera líneas
NA(Number And open) Abre un hoyo
NF(Number file) Renumera fichero
NP(number page) Renumera pág
O (Output) Guarda la salida a un fichero
P (Print) Presenta las líneas en la TTY
R (Replace) Borra e inserta
S (Substitute) Busca y reemplaza
T (Transfer) Mueve texto
VL(inVert Lower) Convierte a min
VU(inVert Upper) Convierte a may
VV(inVert inVert) Conmuta may/min
W (World) Salva el mundo (fichero)
X (eXtend) Agrega al final de la línea
; (comment) Resto de línea ignorado
@ (indirect) Ejecuta desde un fichero
= (give) Imprime valores de parámetros
/ (set) Establece valores
. (move) Mueve el puntero de línea

Herramientas de Chat

Si desea utilizar estos comandos para conversar con otros usuarios conectados al sistema de cómputo TWENEX.ORG, debe tener configurados TERMINAL RECEIVE LINKS.

Para ello ingresa:

TERMINAL RECEIVE LINKS

Si no desea recibir mensajes en su terminal o desea cesar tal posibilidad momentáneamente, ingrese:

TERMINAL NO RECEIVE LINKS

Se trata de un programa pensado para terminales teletipo, utilizado para chatear con otros usuarios de TWENEX.org.

Asegúrate de activar la recepción de enlace de terminal con

TERM REC LINK

. Debes conocer también el número de terminal (TTY) al que deseas enlazar para la charla. Utiliza el comando FINGER revisa qué usuarios están utilizando el subsistema COMMODE y qué número de terminal (TTY) tienen.

Ejecuta el programa:

COMMODE

Enlázalo con Ctrl+L.

TTY:

Ingresa el número de terminal.

El otro/s usuario/s deberá/n aceptar el enlace.

Para empezar a hablar educadamente, presiona la barra espaciadora y se presentará tu nombre de LOGIN. Considera que la conversación es half-dúplex, lo que significa que todas las terminales enlazadas podrían escribir al mismo tiempo. Túrnate para chatear.

Si oprimes la tecla ESC se escribirá GO AHEAD (“Continúe”).

Ctrl+x te permitirá salir a EXEC. Retornarás al subsistema COMMODE con el comando POP.

El subsistema SEND permite enviar mensajes de texto a otro usuario en otra terminal. Una vez que haya recibido un mensaje por parte de un usuario, podrá utilizar el comando REPLY para responderte.

Inicia el subsistema SEND para enviar mensajes a otro usuario. Para ello utiliza:

send usuario

Responde usando:

REPLY usuario

Sal del subsistema SEND mediante Ctrl+z.

Protección de Ficheros y Directorios

TOPS-20 permite protección de DIRECTORIOS y ARCHIVOS de 18 bits, lo que incluye funcionalidades encontradas bajo los permisos de 9 bits de UNIX, asñi como protecciones adicionales que son únicas a TOPS-20.

* PARA ARCHIVOS:

   OCTAL   PROPIEDAD
   --------------------
      77   ACCESO TOTAL
      40   LECTURA
      20   LECTO-ESCRITURA
      10   EJECUCIÓN
      04   INCLUIR
      02   LISTAR
      00   SIN ACCESSO

* PARA DIRECTORIOS:

   OCTAL   PROPIEDAD
   --------------------
      77   ACCESO TOTAL
      40   LECTURA
      10   CONEXIÓN
      04   CONSTRUIR
      00   SIN ACCESO

Las PROTECCIONES están agrupadas juntas en un conjunto de 3, y corresponde a:

   @SET DIRECTORY PROTECTION <LOGIN> 777700
                                      ^ ^ ^
                                      | |  \ todos los demás usuarios
                                      |  \__ usuarios en su grupo
                                       \____ su propio usuario (propietario)

Como tal, usted y los usuarios en su grupo tendrán acceso completo al directorio <LOGIN>, mientra que todos los demás usuarios no tendrán acceso alguno.

Si está acostumbrado a los permisos de fichero de UNIX, debería resultarle impresionante el manejo que hace TOPS-20, ya que es posible crear un archivo que:

- No aparezca en un listado de directorio - No sea legible incluso si conoce su nombre. - Sea agregable a todos los usuarios

Los ficheros tienen atributos de permisos como en Unix, pero en octales.

77 es acceso completo
52 solo lectura
00 acceso denegado

El espacio se indica en “PAGES” (páginas).

Bash en TOPS-20

Se puede llamar a esta función totalmente espúrea, pero puedes ejecutar el intérprete BASH del proyecto GNU compilado para TOPS-20.

Para ello ingresamos:

SH

Obtendrás el intérprete Bash con su prompt:

bash$

No es posible utilizar todas las facilidades de Bash pues no todas están integradas, pero si ingresas SET o ENV obtendrás los datos de ambiente que dilucidan a BASH sobre TOPS-20.

Para salir del intérprete Bash, ingrese exit.

Programar en TOPS-20

TWENEX era recordado por sus facilidades de programación, de modo que existen muchos subsistemas pensados para compilar y programar.

Macro-10 era el ensamblador nativo de la DEC PDP-10, y TWENEX naturalmente contaba con él.

Ingresemos un programa en MACRO-10. Creamos el código con el editor emacs para un fichero llamado vpc.mac

emacs vp.mac

Pega el código fuente:

    TITLE VPC
    SEARCH MONSYM
    
EVEC:   JRST    START
        JRST    START
        EXP     0
        
START:  RESET%
        HRROI   1,[ASCIZ / Viva Peron, carajo!/]
        PSOUT%
        HALTF%
        JRST    START
        
        END     <3,.EVEC>

Y guárdalo con Ctrl+x, Cttrl+s, y sal con Ctrl+x,Ctrl+z. Compila el código con:

compile vpc

y lo guardamos para obtener el binario ejecutable vpc.exe.

load vpc

Ejecútalo con

vpc

C es el lenguaje típico portable. Podrán escribir un programa llamado llamada vp.c con el siguiente código fuente:

void main(){
printf("Viva Peron!!!\n");
}

Lo compilamos con:

compile vp.c

y lo cargamos con con

save vp

Una vez finalizado, lo corremos con:

vp

LISP era una serie de dialectos de lenguajes de programación concebidos para tareas de desarrollo de inteligencia artificial en el MIT.

MACLisp

Para usar MACLispP:

@DEFINE MACLISP: PS:<MACLISP>
@ maclisp:maclisp

InterLISP

@ define interlisp: ps:<interlisp>
@ interlisp:lisp

C Lisp

@ <clisp>clisp
Uppsala Common Lisp, Version of 15-Dec-1987, (c) 1985, C. Hedrick
CL>(+ 2 2)
4
CL>(quit)

Uso de FTP en TWENEX

Podrás usar el el subsistema FTP desde SDF.org u otro host para cargar y descargar ficheros a tu instancia TWENEX. Ingresa al subsistema de transferencia de ficheros con:

ftp sdf.org

Nos logueamos con:

login ftp

Al encontrar el prompt FTP> del cliente de transferencia de ficheros, presiona ? para ver los comandos en uso en el subsistema FTP. Podremos usar open para conectarnos a otros servidores FTP anónimos.

Habremos de tener en cuenta estas reglas de uso:
  • Para transferir fichero de texto o no compilados, utiliza el modo ASCII con el comando SET TYPE ASCII,
  • Para binarios, debemos usar modo PAGED, con
FTP>SET TYPE PAGED

Los comandos son los tradicionales de FTP. Utiliza CD y DIR para moverte en los directorios, y utiliza GET para descargarlo. 

Podremos también participar de clases en video en el canal de Twich de SDF, o bien ver los videos de las bootcamp (en inglés).

Sin duda, aprender TWENEX nos transportará al pasado y al verdadero súmun de la cultura hacker del Justicialismo.

 

Por eso, compañeros, si yo hubiera de fijar el rumbo en la ejecución de las tareas docentes de esta casa, solamente daría un directiva de muy pocas palabras: tenemos que formar, primero hombres buenos y del pueblo. En segundo lugar, formar trabajadores, sobre todas las cosas. Y, en tercer lugar, formar hombres patriotas, que sueñen con una Nueva Argentina en manos del pueblo, como instrumento del pueblo para lograr la grandeza de la Patria y la felicidad de ese mismo pueblo.

Si formáramos un nuevo grupo de intelectuales ignorantes, de los que tenemos tantos, que simulan saber para aprovechar de los que saben menos, no habríamos hecho un gran progreso sobre lo que tenemos.

Lo que necesitamos son hombres leales y sinceros, que sientan el trabajo, que se sientan orgullosos de la dignidad que el trabajo arrima a los hombres, y que, sobre todas las cosas, sean capaces de hacer, aunque no sean capaces de decir.

 

lunes, 7 de marzo de 2022

Cómo soluciono el error de SSH "Too Many Authentication Failures" en Ubuntu

¡Trabajadores! 

Un Movimiento no versa tanto por la calidad de sus integrantes, sino por la de sus dirigentes. Esto es así pues la Masa Popular - que es el verdadero consumo - se rige por la primacía del número: la cantidad de sus adherentes.

Es que el hombre dejó hace millones de años de ser un animal gregario para transformarse en un individuo de alcance social, que se ha organizado en tribus, reinos, naciones, y hoy en Estados.

Quien Conduzca en nuestro Movimiento ha de obrar en búsqueda de la inclusión: incorporar a todo el que se pueda. Ha de dar acceso a todos los beneficios y bienaventuranzas que tiene pertenecer a un Movimiento de raigambre popular.

Para ingresar a un Movimiento ayuda tener una buena cara, como esta:

Pero también ayuda contar con las necesarias credenciales de Secure Shell. Esto es así pues este sistema de comunicación computarizada nos permite acceder de forma remota o local, a distintos servicios informatizados con GNU. Una vez establecido el enlace,  podremos utilizar secure Shell para conducir o bien para realizar cualquier acción dentro de un sistema GNU con Linux al amparo de una conexión criptográficamente protegida.

Esto es lo deseable.

Sin embargo, a seguro se lo llevaron preso. No sería raro encontrarnos con numerosos errores de rechazo de conexión SSH. Tal vez el error más común de autenticación con llaves SSH sea el inefable "Too Many Authentication Failures", que en el idioma de Braden quiere decir algo así como "Demasiados intentos de Autenticación fallidos".

Esto tiene una explicación bastante terrenal, pero que hay que conocer. Si utilizamos el sistema de llaves públicas SSH, será normal contar con archivos que conforman dichos pares de llaves SSH. En el caso de GNU con Linux, estos suelen econtrarse en nuestro directorio de usuario oculto ~/.ssh. 

Por ejemplo, podríamos abrir una terminal con Ctrl+Alt+T y solicitar un listado de las llaves tenemos instaladas en nuestro cliente de SSH. A tal fin utilizaremos el siguiente comando:

ssh-add -l

Pues bien señores, cuando nos conectamos a un servidor SSH, lo normal es que no le especifiquemos al cliente "cual llave usar" de entre todas las que tenemos en el llavero .ssh. Esto suele responder a la fiaba. En tal caso, el cliente SSH probará torpemente una llave tras otra en el agente de autenticación SSH del servidor, como si de un "ebrio llegando de juerga" se tratara. Lo normal es ir descartándolas en orden alfabético hasta encontrar la que corresponda, autenticar, y "entrar" a la sesión de shell seguro...

El error mencionado se produce por un "limitador de intentos de prueba" para las llaves, el cual está situado en el servidor. Normalmente está configurado en "seis intentos", y lógicamente si tenemos más llaves que dicha cantidad, el procedimiento podría fallar.

Pues bien señores, existen dos maneras de solucionarlo.

En el cliente

En caso de necesitarlo, podríamos intentar lograr acceder a través del uso de la contraseña de conexión (en lugar de la llave). Para ello debemos indicar tal preferencia en el comando mediante el prefijo PreferredAuthentications. Por ejemplo, al ingresar:

ssh -o PreferredAuthentications=password usuario@servidor

...el servidor debería pedirnos la contraseña (si tal método está habilitado, claro está).

Si quisiéramos utilizar siempre el incómodo (y usualmente insegura) acceso por contraseña, podríamos automatizarlo desde el lado del cliente de conexión. En el equipo cliente ingresamos:

nano ./ssh/config

...y agregamos los datos del sevidor. Por ejemplo:

Host servidor
Port 22
User fulano
PreferredAuthentications password
HostName servidor.local

Ahora bien, el método más útil para evitar el error de "muchos intentos de autenticación fallidos" sería indicarle específicamente al cliente cuál es la llave necesaria para cada servidor, de modo que no tenga que "buscarla a lo bobo", terminando por superar el "número de intentos" autorizados en el servidor. Para ello lo haríamos usando el prefijo -i e indicando el fichero de la llave requerido, de la siguiente manera:

ssh -i ~/.ssh/llave_del_servidor usuario@servidor

Como esto es sumamnete largo de escribir e incordioso (sobre todo si lo tenemos que hacer a menudo), conviene especificar este determinismo de llave en el fichero de configuración de nuestro usuario en el cliente SSH, el cual es ~/.ssh/config. También podríamos especificar directamente qué llave queremos utilizar para dicho usuario utilizando la variable IdentityFile para cada conexión. Esto se haría de la siguiente manera:

Host servidor
Port 22
User fulano
IdentityFile ~/.ssh/llave_del_servidor
HostName servidor.local

Acto seguido, guadamos los cambios con Ctrl+o.

 

En el servidor

Otra opción es modificar directamente el servidor, lo cual proporciona una solución general. En tal caso, debemos modificar la variable MaxAuthTries del servidor SSH. Esta normalmente viene configurada en 6 intentos, lo cual suele ser adecuado para prácticas laxas donde siempre se usaba una única llave para todo. Sin embargo, las políticas más modernas tienden a preferir que cada usuario disponga de una llave cifrada para cada instancia remota, de forma de poder "zafar" si una de las llaves se pierde o es comprometida.

En dicho caso, elevar el número de intentos permitidos por encima de un valor más alto (por ejemplo, 20), podría resultar más provechoso.

Para realizar tales cambios, en el servidor editamos el archivo de configuración. Por ejemplo, podremos hacerlo con GNU Nano introduciendo:

sudo nano /etc/ssh/sshd_config

Habrán de presionar Ctrl+w para buscar la variable MaxAuthTries. Una vez que la encontramos la descomentamos eliminando el signo # que la antecede, y elevamos el valor de la variable del 6 original a uno adecuado según la cantidad de llaves (por ejemplo, 20).


Es importante tener en cuenta que esto no implica que "se da un cheque en blanco a probar llaves" sino que se autoriza que cada usuario pruebe dicha cantidad de veces.

Para que el cambio surta efecto, debemos reiniciar el servicio de SSH ingresando:

sudo systemctl restart sshd

Naturalmente, podrán contemplar también otras técnicas recomendadas para asegurar un servidor de SSH.