Como posso dizer uma conexão ssh de uma conexão sftp?

1

Estou tentando impedir que um usuário ssh execute comandos indesejados por meio do ssh de um host remoto. Para isso estou usando o comando forçado no arquivo authorized_keys que permitirá que o usuário ssh execute somente um comando em particular.

Se eu não definir isso, posso fazer o login via ssh e sftp.

Como posso diferenciar se a conexão remota é emitida via ssh ou sftp em um script de shell?

O comando que estou esperando é o seguinte e ambos devem funcionar: -

ssh ssh-usuario @ hostname test_scripts.sh

sftp ssh-user @ hostname

Eu usei a variável $ TERM para diferenciar entre ssh e sftp. Se for sftp, o $ TERM retornará 'mudo'. Mas quando estamos passando um comando através do ssh, então o $ TERM está retornando mudo. Alguma ideia de como diferenciar?

Adicionando mais detalhes à questão: -

se [$ TERM = 'burro']; então

$ SSH_ORIGINAL_COMMAND #Se o sftp, execute este

else

echo "Isto é ssh" #If ssh, execute isto

fi

O script acima é o invocado via comando forçado. Quando eu estou conectando remotamente através de ssh, então eu estou recebendo a mensagem como esperado como "This is ssh"

ssh ssh-user @ hostname Isso é ssh

E quando estou tentando conectar-me através do sftp, então, como esperado, a condição if foi confirmada e estou recebendo o prompt do sftp.

sftp ssh-user @ hostname sftp >

Mas quando estou passando um comando junto com o comando ssh, o $ TERM é definido como mudo. Então a condição if se tornou realidade.

ssh ssh-usuario @ hostname ls

Eu preciso distinguir entre os dois últimos métodos no script acima. Alguém poderia me ajudar nisso?

    
por user156372 28.01.2013 / 11:49

1 resposta

1

Dê uma olhada no Anúncio restrito - geralmente em / bin / rbash. Eu usei isso recentemente para conseguir algo parecido com o que você está tentando fazer (depois de peidar com as cadeias chroot e não chegar a lugar nenhum).

Para os usuários que eu queria restringir, configurei o terminal para / bin / rbash e seu PATH para $ {HOME} / bin. Eu então criei um link simbólico para qualquer comando que eu queria que eles pudessem rodar em seu diretório $ {HOME} / bin. Eu não acho que é 100% infalível, mas fez o trabalho com meus usuários.

Eu não testei os comandos que são enviados como parte da linha de comando do SSH, mas não vejo por que isso não funcionaria, desde que o shell do usuário esteja definido como rbash.

    
por 28.01.2013 / 12:33

Tags