É possível configurar o ssh (no linux) para permitir o acesso apenas para encapsulamento? Ou seja, o usuário pode configurar túneis, mas não pode obter um shell / acessar arquivos?
linux
ssh
ssh-tunnel
Segundo
fonte
fonte
-N
, ele terá acesso ao shell. Isso realmente não resolve o problema e é perigoso./bin/false
como shell, não terá acesso ao shell, pois todas as sessões de login serão encerradas imediatamente.No arquivo .ssh / allowed_keys do usuário, coloque algo como o seguinte:
Então, basicamente, os controles estariam na frente da chave pública ssh do usuário, separados por um espaço. No exemplo, as conexões que usam a chave pública específica poderão fazer o encaminhamento de porta SSH apenas para o servidor MySQL do 192.168.1.10 e o servidor da Web 10.0.0.16, e não receberão um shell (no-pty). Você está perguntando especificamente sobre a opção "no-pty", mas as outras também podem ser úteis se o usuário precisar apenas fazer um túnel para servidores específicos.
Consulte a página de manual do sshd para obter mais opções para o arquivo allowed_keys .
Observe que a experiência do usuário pode parecer um pouco estranha: quando ele entra, parece que a sessão está interrompida (pois não está recebendo um arquivo). Isso está ok. Se o usuário especificou o encaminhamento de porta com, por exemplo, "-L3306: 192.168.1.10: 3306", o encaminhamento de porta ainda estará em vigor.
De qualquer forma, tente.
fonte
no-pty
não impede o acesso ao shell, apenas não fornece um pty ao shell. Ele não exibe o prompt (ou seja, "parece travar"), mas você ainda pode dar comandos perfeitamente. Você precisa dacommand="..."
opção.ssh/authorized_keys
se deseja restringir o acesso ao shell a partir daí.Dê ao usuário um shell que permita que ele efetue logout, como
/bin/press_to_exit.sh
Dessa forma, ele pode permanecer conectado o tempo que quiser, com os túneis ativos, mas sem executar nenhum comando.
Ctrl-c
fecha a conexão.fonte
Atribua um shell que não permita que o usuário efetue login.
por exemplo
impediria que eles recebessem um prompt de shell e desse um tempo limite de 60 segundos - se não houver conexão ativa por 60 segundos, ela será encerrada e, portanto, desconectada completamente (aumente o número de acordo com os requisitos).
Eles também não podem executar um comando remoto, porque esse shell não permite.
fonte
logout
" em um normal./sbin/nologin
, que você pode personalizar com uma mensagem amigável/etc/nologin.txt
.Minha solução é fornecer ao usuário que só pode estar encapsulando, sem um shell interativo , definir esse shell em / etc / passwd como / usr / bin / tunnel_shell .
Basta criar o arquivo executável / usr / bin / tunnel_shell com um loop infinito .
Além disso, use as opções
AllowGroups
eMatch Group
.Totalmente explicado aqui: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
fonte