Exemplo SSH ForceCommand - requer que um usuário insira um token antes de obter o acesso ao shell?

1

Gostaria de solicitar ao usuário alguma informação antes de entrar no SSH. Idealmente, gostaria de executar um script que solicite informações, verifique se as informações estão corretas e, em seguida, se elas são soltadas em um shell. Então, pense:

ssh [email protected]
password: xxxx

do you agree to the terms and conditions of use? enter yes or no:
yes 

OK, here's your shell:
# 

Alguém pode fornecer um exemplo de como fazer algo assim?

    
por Keith Palmer Jr. 24.02.2011 / 18:32

3 respostas

1

Crie um novo script de login (/ bin / bash_rest):

#!/bin/bash

echo "do you agree to the terms and conditions of use? enter yes or no:"
read ans

case $ans in
        y|yes|Y|Yes) bash;;
        *) exit
esac

e defina como shell de login:

chmod +x /bin/bash_rest
usermod -s /bin/bash_rest ooshro

ooshro@ooshro:~$ ssh -p 2022 localhost
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/
Last login: Thu Feb 24 17:43:06 2011 from 10.0.2.2
do you agree to the terms and conditions of use? enter yes or no:
yes
ooshro@ubuntu-1010-server-01:~$ exit
Connection to localhost closed.
ooshro@ooshro:~$ ssh -p 2022 localhost
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/
Last login: Thu Feb 24 17:43:17 2011 from 10.0.2.2
do you agree to the terms and conditions of use? enter yes or no:
no
Connection to localhost closed.
    
por 24.02.2011 / 18:42
1

Supondo por um momento que você está usando o opensshd, uma alternativa possível que faz quase o que você quer, e é muito mais simples de implementar, seria usar um banner de login. Isso não fará exatamente o que você deseja fazer - ele exibirá um texto antes do usuário efetuar login.

Você pode alterar sua política de acordo - "fazendo login você está aceitando estes termos e condições".

Você pode fazer isso usando a opção "Banner" em / etc / sshd / sshd_config. Por exemplo:

# echo "Banner /etc/sshd/sshd-banner" >> /etc/sshd/sshd_config
# echo "By logging on you're accepting the terms and conditions." > /etc/sshd/ssh-banner
    
por 26.11.2011 / 19:47
0

Eu adicionaria alguns logs rudimentares a esse script bash e, em vez de tornar esse script o shell padrão, eu consideraria / etc / ssh / sshrc ou /etc/profile.local ou / etc / profile. O teste é necessário porque o comportamento em diferentes sistemas pode variar. Existem algumas razões para não criar shells não padrão, uma das quais é a necessidade de adicionar um novo shell ao / etc / shells. A menos que seja absolutamente necessário, permaneça com os shells definidos em / etc / shells.

    
por 24.02.2011 / 22:19

Tags