Minha empresa exige que eu tenha um aplicativo de servidor em execução, que todos os usuários acessem através do terminal putty. Eu quero escrever um script de shell que apenas 20 putty terminal devem estar abertos. Se o 21º terminal estiver aberto, quero fechar esse terminal imediatamente.
Como posso conseguir isso?
Por favor me ajude.
command-line
bash
scripts
vijay12289
fonte
fonte
MaxSessions
campo/etc/sshd_config
ou isso é um bug do Ubuntu?Respostas:
Edite seu
/etc/sshd_config
no lado do servidor e altere a linha:para
Veja
man sshd_config
:fonte
MaxSessions 20
. As sessões mencionadas são sobre encaminhamento de porta (e até mesmo com mais de um shell aberto) usando a mesma conexão, não sobre o número de logins no sistema.A solução de George funciona bem, mas você pediu um script do bash ...
Por isso, considero este um para outras situações em que não há nenhuma opção, como
MaxSessions
desshd
, em seguida, você pode usar algo como isto:O
pkill -n
que matará a instância mais recente doprocessName
.A solução correta para essa situação especial é a resposta de George.
fonte
Eu decidi elaborar e testar o Ravexina 's idéia . Funciona e é eficaz se você deseja restringir o número de conexões ssh estabelecidas.
Primeiro, descobri que quando o daemon ssh está sendo executado sem conexão, há um
sshd
processo. Para cada nova conexão, dois novossshd
processos são criados. Portanto, se você deseja um limite de 20 conexões, o limite deve ser 41 (1 + 2x20) em vez de 20.Então eu criei um arquivo executável, chamado , com a seguinte aparência:
/usr/local/bin/limit-sshd
Finalmente, adicionei a seguinte diretiva a
/etc/ssh/sshd_config
:$SHELL
executará o shell do usuário padrão.sudo systemctl restart sshd.service
Aqui está como isso funciona ( clique na imagem para ver uma demonstração animada ):
Além disso, percebi que não precisamos matar nada, se modificarmos o script desta maneira:
E respectivamente
/etc/ssh/sshd_config
desta maneira:fonte
A questão não está clara. Deixe-me contar primeiro como eu o entendo e de que maneira, na OMI, deve-se perguntar:
Se essa interpretação estiver correta, provavelmente uma maneira correta de atender aos requisitos é criar um grupo de usuários , adicione todas as contas de usuário a esse grupo e limite o número de maxlogins via
/etc/security/limits.conf
.Crie um grupo, chamado, por exemplo
the-app-maxlogins
, com o ID do grupo10 000
:Adicione os usuários a esse grupo -
sudo adduser <user> <group>
:Adicione a próxima linha a
/etc/security/limits.conf
para limitar o maxlogins de todo o grupo :Ou adicione a seguinte linha para limitar o número máximo de logins por usuário do grupo :
Edite
/etc/ssh/sshd_config
e adicione as seguintes linhas na parte inferior (!) Do arquivo para desativar a multiplexação de sessão para esse grupo (provavelmente isso não é obrigatório nesse caso):Essa solução limitará o número de logins dos usuários afetados, independentemente do ssh ou tty. Se você deseja aplicá-lo a um determinado usuário e não a um grupo, adicione uma linha como a seguir
limits.conf
ou coloque-a em um.conf
arquivo separado dentro do diretório/etc/security/limits.d/
:Uma explicação simples do real significado da diretiva
MaxSessions
é fornecida nesta resposta . A principal fonte da resposta atual é outra resposta sob a mesma pergunta de pesquisa e desenvolvimento.A outra resposta minha poderia fornecer uma solução alternativa de alguma forma, mas é um tipo de solução divertida e não verdadeira.
fonte