Como eu permito aos usuários executar comandos via ssh sem alocar um pseudo-terminal

1

Eu preciso permitir que os usuários executem um conjunto limitado de comandos.

Mas não permitir que criem sessões interativas.

Assim como o GitHub faz.

Se você tentar ssh sem um comando, você cumprimenta você e fecha a sessão.

Eu posso adquirir isso usando ForceCommand some-script

Mas entrar em some-script i precisa de entrada do usuário eval.

Talvez qualquer outra opção NoTTY -like em sshd_config?

--- ATUALIZAÇÃO ---

Estou procurando uma solução SSH / Bash pura, não Perl / Python / etc. hacks.

    
por Dani El 22.10.2012 / 22:23

4 respostas

5

Você está no caminho certo ao definir ForceCommand como um script. Você precisa então inspecionar a variável de ambiente SSH_ORIGINAL_COMMAND , que contém o comando real que o usuário forneceu ao cliente SSH. Por exemplo:

#!/bin/sh

case "$SSH_ORIGINAL_COMMAND" in
    date)
        date
        ;;
    fortune)
        fortune
        ;;
    *)
        echo "Valid commands are: date, fortune"
        exit 1
        ;;
esac

O usuário pode então executar comandos como este:

% ssh localhost fortune 
Q:   How much does it cost to ride the Unibus?
A:      2 bits.

Se o usuário não fornecer um comando, ele deverá receber uma mensagem de erro do script (e a conexão foi encerrada):

% ssh localhost
Valid commands are: date, fortune, rev
Connection to localhost closed.

Editar: É possível desativar um terminal em authorized_keys ao usar autenticação de chave:

command="/usr/local/bin/restricted.sh",no-pty ssh-rsa AAA...
    
por 22.10.2012 / 22:55
1

Se você quiser permitir apenas os comandos git , defina o shell do usuário como git-shell com o seguinte comando:

usermod -s /usr/bin/git-shell <USERNAME>

git-shell faz parte do pacote git.

Se você quiser permitir comandos arbitrários, a resposta do mgorven é o caminho a seguir.

    
por 22.10.2012 / 23:53
0

Dê uma olhada na página sshd man na seção AUTHORIZED_KEYS FILE FORMAT . Eu acho que você está procurando pela opção no-pty .

    
por 22.10.2012 / 23:15
-3

Dê uma olhada neste script:

link

É um script perl que restringe os comandos ...

    
por 22.10.2012 / 22:27

Tags