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á.