Resumen de problemas relacionados con la interrupción de la conexión de Linux

¿Por qué se interrumpe la conexión SSH?

  • $ TMOUT = 0 problema de variable de entorno
  • Las sesiones sin transmisión de datos se desconectarán automáticamente durante más de un cierto período de tiempo, problemas de configuración del sistema
  • Problema de firewall
  • El conflicto de IP no se puede conectar
  • La raíz no se puede conectar directamente
  • herramienta de pantalla
  • Ejecución de procesos en segundo plano

01. echo $ TMOUT

Conexión remota de Linux, puede configurar TMOUT en el entorno para lograr el efecto de desconectarse automáticamente después de que la entrada del usuario esté inactiva durante un período de tiempo, evitando conexiones remotas excesivas y mejorando la seguridad.

Configuración: agregue los siguientes campos a / etc / profile (válido para todos los usuarios).

# 设置900秒内用户无操作就字段断开终端
export TMOUT=900 			
#加载生效
source /etc/profile	

Cancelar configuración: después de configurar solo lectura, no se puede cancelar en el shell actual. Primero debe comentar o eliminar la línea de solo lectura en / etc / profile, e iniciar sesión nuevamente después de salir.

# 设置900秒内用户无操作就字段断开终端
$ export TMOUT=900
# 将值设置为readonly 防止用户更改
$ readonly TMOUT
# 删除设置(只读的需要从文件删除)
$ unset TMOUT
-bash: unset: TMOUT: cannot unset: readonly variable

Un pequeño ejemplo: la
variable TMOUT se utiliza para establecer el tiempo de vencimiento del Shell. Cuando TMOUT no es 0, el Shell se desconectará automáticamente después de TMOUT segundos. Por lo tanto, debe configurar su propio terminal, no todas las veces (generalmente: 1 hora, TMOUT es la variable propia del sistema, se puede ver a través de echo $ TMOUT), desconectar automáticamente, puede configurar TMOUT = 0. TMOUT se coloca en el script, que puede especificar ingeniosamente el tiempo de ejecución del script. Por ejemplo: esperando la entrada del usuario, tiempo de espera:

#!/bin/bash
# fileName: timeOut_example.sh
TMOUT=3
echo -n "What's your name? "
read NAME
if [ -z "$NAME" ]; then
	echo "No Input Here!"
else
	echo "Your Name is $NAME"
fi

El script anterior es muy simple, solo para ilustrar el uso de TMOUT. Pregunte el nombre del usuario. Si el usuario ha ingresado dentro de 3 segundos, salga inmediatamente después de mostrar el nombre del usuario. Si no se ingresa nada después de esperar TMOUT (3 segundos), ¡el script terminará automáticamente! Aquí está la salida del script:

# chmod +x timeOut_example.sh
# ./timeOut_example.sh
What's your name? Jerry    # 3秒内输入Jerry
Your Name is Jerry         # 显示输入

# ./timeOut_example.sh 
What's your name?          # 3秒内无输入
No Input Here!             # 输出提示符,脚本结束

02. Configuración del intervalo de conexión inactiva (nivel de protocolo)

ClientAliveInterval especifica el intervalo de tiempo para que el servidor solicite mensajes al cliente, el valor predeterminado es 0 y no se envía. Y ClientAliveInterval 60 significa enviar una vez cada minuto, y luego el cliente responde, para que se mantenga la conexión larga. Lo extraño aquí es que el servidor debe estar activo primero.

ClientAliveCountMax puede usar el valor predeterminado de 3. ClientAliveCountMax significa que la cantidad de veces que el cliente no responde después de que el servidor envía una solicitud alcanza un cierto valor y se desconectará automáticamente. Normalmente, el cliente no dejará de responder.

[root@ufo130 ~]# cat /etc/ssh/sshd_config | grep ClientAliveInterval
#ClientAliveInterval 0
[root@ufo130 ~]# cat /etc/ssh/sshd_config | grep ClientAliveCountMax
#ClientAliveCountMax 3

Reiniciar para que surta efecto

centos7: systemctl
centos6: servicio

Comprobar estado:

systemctl status sshd.service
service sshd status

Inicie el servicio:

systemctl start sshd.service
service sshd status

Reinicie el servicio:

systemctl restart sshd.service
service sshd status

Autoinicio después del arranque:

systemctl enable sshd.service
service sshd status

03. La raíz no se puede conectar directamente

[root@ufo130 ~]# vi /etc/ssh/sshd_config
# 把 PermitRootLogin no 改为 yes
PermitRootLogin yes

# 重启sshd服务
[root@ufo130 ~]# service sshd restart

04. conflicto de ip

Compruebe la situación del enrutamiento: los conflictos de IP provocarán fallos en la conexión o desconexión.

[Resumen de comandos de uso común para la administración de redes Linux]
https://blog.csdn.net/qq_42226855/article/details/111143390

05. Cortafuegos

[Configuración del servicio de firewall de Linux]
https://blog.csdn.net/qq_42226855/article/details/112203620

06. Utilice la herramienta de pantalla (la interfaz de sesión de conexión remota se bloquea)

Antecedentes
Los administradores del sistema a menudo necesitan SSH o Telent para iniciar sesión de forma remota en servidores Linux y, a menudo, ejecutan tareas que tardan mucho en completarse, como la copia de seguridad del sistema, la transferencia de ftp, etc. Por lo general, abrimos una ventana de terminal remota para cada una de estas tareas porque demoran demasiado en ejecutarse. Debes esperar a que terminen de ejecutarse, durante este tiempo no podrás cerrar la ventana ni desconectarte, de lo contrario se matará la tarea y se abortará todo.

Introducción
GNU Screen es un software gratuito para la conmutación de terminales de línea de comandos desarrollado por GNU Project. Los usuarios pueden conectarse a múltiples sesiones de línea de comandos locales o remotas al mismo tiempo a través del software y cambiar entre ellas libremente.

La pantalla GNU puede verse como la versión de la interfaz de línea de comandos del administrador de ventanas. Proporciona una interfaz unificada y las funciones correspondientes para gestionar varias sesiones.

  • Reanudación de la sesión
    Siempre que la pantalla en sí no se termine, las sesiones que se ejecutan dentro de ella pueden reanudarse . Esto es particularmente útil para los usuarios que inician sesión de forma remota. Incluso si se interrumpe la conexión de red, el usuario no perderá el control de la sesión de línea de comandos abierta. Simplemente inicie sesión en el host nuevamente y ejecute screen -r para reanudar la sesión. Del mismo modo, al salir temporalmente, también puede ejecutar el comando detach para suspender la pantalla (cambiar al fondo) mientras se asegura el funcionamiento normal del programa en el interior. Esto es muy similar a VNC bajo la interfaz gráfica.
  • Ventana múltiple
    En el entorno Pantalla, todas las sesiones se ejecutan de forma independiente y tienen su propio número, entrada, salida y caché de ventana. Los usuarios pueden cambiar entre diferentes ventanas a través de teclas de método abreviado y pueden redirigir libremente la entrada y salida de cada ventana. Screen implementa operaciones básicas de texto, como copiar y pegar, etc .; también proporciona una función similar a una barra de desplazamiento para ver el historial del estado de la ventana. La ventana también se puede particionar y nombrar, y se puede monitorear la actividad de la ventana en segundo plano.
  • La
    pantalla para compartir sesiones permite a uno o más usuarios iniciar sesión en una sesión varias veces desde diferentes terminales y compartir todas las características de la sesión (por ejemplo, puede ver exactamente el mismo resultado). También proporciona un mecanismo para la autoridad de acceso a la ventana, que puede protegerse con contraseña.

Sitio web oficial: http://www.gnu.org/software/screen/
Documento del manual: http://www.gnu.org/software/screen/manual/

01. Descarga e instala la herramienta de pantalla

[root@ufo130 tmp]# wget http://ftp.gnu.org/gnu/screen/screen-4.0.3.tar.gz
[root@ufo130 tmp]# tar -xzvf screen-4.0.3.tar.gz
[root@ufo130 tmp]# cd screen-4.0.3
[root@ufo130 screen-4.0.3]# ./configure
[root@ufo130 screen-4.0.3]# make
CPP="gcc -E " srcdir=. sh ./osdef.sh
AWK=gawk CC="gcc -g -O2" srcdir=. sh ./comm.sh
AWK=gawk srcdir=. sh ./term.sh
gcc -c -I. -I.    -g -O2 screen.c
screen.c:54:26: error: sys/stropts.h: No such file or directory
make: *** [screen.o] Error 1
[root@ufo130 screen-4.0.3]# mkdir sys
[root@ufo130 screen-4.0.3]# touch sys/stropts.h
[root@ufo130 screen-4.0.3]# make

# make install

[root@ufo130 screen-4.0.3]# install -m 644 etc/etcscreenrc /etc/screenrc
[root@ufo130 screen-4.0.3]# cp ./screen /bin

02. Opciones de comando

[root@ufo130 screen-4.0.3]# screen -h

03. Parámetros de pantalla comunes

Simplemente presione la pantalla de comando para iniciarlo. Sin embargo, la sesión de pantalla iniciada de esta manera no tiene nombre. En la práctica, se recomienda dar un nombre a cada sesión de pantalla para facilitar su identificación.

[root@ufo130 ~]# screen -S myufo

Después de que se inicie la pantalla, creará la primera ventana y abrirá un shell predeterminado del sistema en ella, generalmente bash. Entonces, después de escribir la pantalla de comandos, volverá inmediatamente al símbolo del sistema, como si no hubiera pasado nada, de hecho, hubiera ingresado al mundo de Screen.

Salir de la sesión actual

Ctrl+a+d				-> 退出当前会话,并挂起
screen -d myufo 		-> 退出指定会话,并挂起
Ctrl+d					-> 退出当前会话,并杀掉会话
screen -X -S [session] quit  -> 关闭指定会话

Ver qué sesiones están disponibles actualmente

[root@ufo130 ~]# screen -ls
There are screens on:
	12520.myufo	(Attached)
	12284.pts-0.ufo130	(Detached)
	12256.pts-0.ufo130	(Detached)
	12634.pts-4.ufo130	(Detached)
	12562.pts-5.ufo130	(Detached)
5 Sockets in /tmp/screens/S-root.

Entrar en una interfaz de conversación

[root@ufo130 ~]# screen -r  12284

Utilice las teclas de método abreviado en la sesión: Ctrl + a + parámetro

Ctrl+a+d 		-> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 
Ctrl+a+z 		-> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。

Si una de las sesiones muere por algún motivo (por ejemplo, la sesión se elimina manualmente), use el comando screen -wipe para borrar la sesión:

[root@ufo130 ~]# kill -9 12256
[root@ufo130 ~]# screen -ls
There are screens on:
	12520.myufo	(Detached)
	12256.pts-0.ufo130	(Dead ???)
Remove dead screens with 'screen -wipe'.
2 Sockets in /tmp/screens/S-root.

[root@ufo130 ~]# screen -wipe
There are screens on:
	12520.myufo	(Detached)
	12256.pts-0.ufo130	(Removed)
1 socket wiped out.
1 Socket in /tmp/screens/S-root.

[root@ufo130 ~]# screen -ls
There is a screen on:
	12520.myufo	(Detached)
1 Socket in /tmp/screens/S-root.

Suponga que inicia sesión en la misma máquina que el mismo usuario en diferentes lugares con su amigo, y luego crea una sesión de pantalla, y su amigo puede ejecutar comandos en su terminal

[root@ufo130 ~]# screen -ls
There are screens on:
	12520.myufo	(Detached)
	12843.mytest	(Attached)
2 Sockets in /tmp/screens/S-root.

[root@ufo130 ~]# screen -x 12843.mytest

De esta forma, podrás compartir la misma sesión con tus amigos. Si estás en la misma ventana, equivale a sentarte frente al mismo monitor. Tus operaciones serán demostradas a tus amigos simultáneamente, y las operaciones de tus amigos También se demostrará simultáneamente Darle. Por supuesto, si cambia a una ventana diferente de esta sesión, aún puede realizar diferentes operaciones por separado.

¿Qué debo hacer si la pantalla se muestra adjunta y no se puede conectar? (Patea al usuario anterior e inicia sesión nuevamente)

[root@ufo130 ~]# screen -ls
There are screens on:
	12520.myufo	(Attached)
	12843.mytest	(Detached)
2 Sockets in /tmp/screens/S-root.

[root@ufo130 ~]# screen -r 12520.myufo
There is a screen on:
	12520.myufo	(Attached)
There is no screen to be resumed matching 12520.myufo.
[root@ufo130 ~]# 
[root@ufo130 ~]# screen -D -r 12520.myufo

07. Problema del proceso en segundo plano

  • Se abren conexiones remotas de terceros como Xshell, lo que equivale a abrir un proceso padre de ssh. Cuando se cierra el proceso padre, sus procesos hijos relacionados también terminarán la ejecución (excepto el demonio).

  • La herramienta de pantalla se puede separar de la gestión de la interfaz, y la sesión relacionada se puede retener, desconectar y cerrar sesión permanentemente no se verá afectada.

  • El comando nohup es relativamente más sencillo de usar que la herramienta de pantalla y su función no es tan complicada. Puede ignorar el cierre de la ventana de la sesión y hacer que se cierren los procesos secundarios relacionados.

  • El parámetro & puede separar el proceso de la ventana de la sesión actual para facilitar la ejecución de otros comandos, pero la ventana de la sesión actual está desconectada y el proceso ejecutado en segundo plano también terminará.

[Referencia de resumen de comandos de proceso en segundo plano]
https://blog.csdn.net/qq_42226855/article/details/112638496

Supongo que te gusta

Origin blog.csdn.net/qq_42226855/article/details/111876334
Recomendado
Clasificación