imprimir o conteúdo do arquivo após a sessão de login iniciada por ssh?

imprimir o conteúdo do arquivo após a sessão de login iniciada por ssh?

Quero que o conteúdo de um arquivo seja impresso no login ssh em um sistema unix, se esse arquivo existir. O MOTD já imprime bem como um banner definido em formato sshd_config. Quero imprimir outro arquivo também. Como posso fazer isso? Estou tentando usar o arquivo rc, mas não consegui funcionar, posso definir o conteúdo do arquivo para uma variável no ambiente e imprimi-lo via rc, como você sugere?

Responder1

Você pode usarForçar Comando(uma opção de configuração sshd)

Força a execução do comando especificado por ForceCommand, ignorando qualquer comando fornecido pelo cliente e ~/.ssh/rc se presente. O comando é invocado usando o shell de login do usuário com a opção -c. Isso se aplica à execução de shell, comando ou subsistema. É mais útil dentro de um bloco Match. O comando fornecido originalmente pelo cliente está disponível na variável de ambiente SSH_ORIGINAL_COMMAND. Especificar um comando ''internal-sftp'' forçará o uso de um servidor SFTP em processo que não requer arquivos de suporte quando usado com ChrootDirectory. O padrão é ``nenhum''.

Basta apontar para o script wrapper que exibirá sua mensagem e, em seguida, executar o shell.

Exemplo 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

Isso exibirá uma mensagem em /etc/ssh_banner, se este arquivo estiver lá.

informação relacionada