Conceder acesso ssh para sessão única

4

Gostaria de saber se existe uma ferramenta / ssh-server / ssh modificada que me permite conceder acesso ssh para uma única sessão a um determinado usuário. O que eu quero evitar é criar uma conta de usuário e senha para o convidado específico. Em vez disso, ele poderia usar uma conta de usuário existente com determinados direitos de acesso a serem definidos uma vez. Não quero compartilhar as mesmas informações da conta com todas as pessoas a quem concedo acesso. A permissão de acesso deve funcionar apenas uma vez / tempo limite após um determinado intervalo ou a ferramenta deve perguntar se ele detecta um acesso se desejo concedê-lo. A ideia é compartilhar uma linha como

ssh tempuser001@host

onde tempuser001 informa ao servidor que tenta acessar, mas não corresponde a um usuário real. O usuário pode usar seus privilégios temporários para fazer todas as coisas que você pode com conexões ssh, como scp , rsync e o que funciona através de túneis como vnc , ... A inspiração para isso vem do teamviewer, um tipo de vnc que permite que um usuário remoto acesse minha área de trabalho depois que eu compartilhei um id com ele.

    
por highsciguy 04.04.2013 / 17:30

2 respostas

4

Uma solução seria usar chaves ssh para isso.

Você pode especificar um comando para ser executado sempre que uma determinada chave ssh for usada para efetuar login no servidor. Ao combinar isso com um script de login simples, você pode obter o controle de acesso desejado.

Aqui está um exemplo rápido que eu concordei e concede acesso até uma certa data.

Adicione o ssh do usuário ao arquivo authorized_keys do usuário de destino. Neste exemplo, adiciono a data após a qual o usuário não deve mais ter acesso.

~ / .ssh / authorized_keys

command="/etc/ssh/access.sh 2013-04-05" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDc7nKsHpuC6WW8sBbf1j0snelmBsPAN5GQdJ86sJCyCsDzykvB2i2anLS/U131p0yDf0bU8W8kdsLE9pHQ5NLWlxlyWmFxdKujg4B+WxyHFKO0PHKfQhXEwMrYE4m9QwGYtsQrrWXBg4vQwUvOQDA4cNhdvNrIf/V+BGcdWtCXO/JGy7vkyKLd8LLHcZGsG3Pq5trHAKHaWkQgBN8P+atIX3FbwwQl4Ja020P7LW0ddPuUJxltOS11ZjdsG04s/xpL6JX3xi9FdDpO13SkQ5cqD0GIFkI+CLksqGYvvvpC7/22Rl4hc3nAcOIiwekylSB5rpU4LawF1IxCk0sg0BGr

E crie o script de login a ser executado.

/etc/ssh/access.sh

#!/bin/bash

until="$1"

if (( $(date --date="$until" +%s) < $(date +%s) )); then
    echo "Your login has expired"
    exit
fi

exec ${SSH_ORIGINAL_COMMAND:--a -${SHELL##*/} $SHELL}

(não esqueça de chmod a+x /etc/ssh/access.sh após criá-lo)

Quando o acesso expirar, será parecido com este

PROMPT # ssh localhost
Your login has expired
Connection to localhost closed.
PROMPT #
    
por 04.04.2013 / 20:33
2

Senhas únicas reais ( OTP) em Linux diferente de S / Key? (especificamente S / Key, OPIE e OTPW ) útil?

    
por 04.04.2013 / 19:58