
Quiero que el contenido de un archivo se imprima al iniciar sesión ssh en un sistema Unix, si ese archivo existe. MOTD ya imprime, así como un banner configurado en formato sshd_config
. También quiero imprimir otro archivo. ¿Cómo podría hacer esto? Estoy intentando obtener el archivo rc pero no lo hago funcionar. ¿Puedo configurar el contenido del archivo en una variable en el entorno e imprimirlo a través de rc? ¿Cómo sugeriría?
Respuesta1
Puedes usarComando de fuerza(una opción de configuración sshd)
Fuerza la ejecución del comando especificado por ForceCommand, ignorando cualquier comando proporcionado por el cliente y ~/.ssh/rc si está presente. El comando se invoca utilizando el shell de inicio de sesión del usuario con la opción -c. Esto se aplica a la ejecución de shell, comando o subsistema. Es más útil dentro de un bloque Match. El comando proporcionado originalmente por el cliente está disponible en la variable de entorno SSH_ORIGINAL_COMMAND. Especificar un comando de ''internal-sftp'' forzará el uso de un servidor sftp en proceso que no requiere archivos de soporte cuando se usa con ChrootDirectory. El valor predeterminado es "ninguno".
Simplemente haga que apunte al script contenedor que mostrará su mensaje y luego ejecute el shell.
Ejemplo de sshd_config (OpenSSH_7.2p2):
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin prohibit-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
ForceCommand /usr/local/bin/ssh-wrapper
/usr/local/bin/ssh-wrapper
#!/bin/sh
[ -r "/etc/ssh_banner" ] && cat /etc/ssh_banner
CMD=${SSH_ORIGINAL_COMMAND:+-c $SSH_ORIGINAL_COMMAND}
exec $SHELL -l $CMD
Eso mostrará un mensaje en /etc/ssh_banner, si este archivo está allí.