Desejo conceder acesso root temporariamente a partir do ip 1.2.3.4, apenas para a sessão atual (até o próximo sshd ou reinicialização do servidor)
Eu poderia adicionar isso a sshd_config
e, em seguida, lembrar de removê-lo:
AllowUsers [email protected]
mas tem jeito melhor? Posso alterar as configurações atuais do daemon sshd atualmente em execução, sem editar o arquivo de configuração?
Remova-o imediatamente, para que não haja nada para lembrar, nada para esquecer. Quero dizer:
sshd_config
, salve as alterações.sshd_config
, salve as alterações.Dessa forma, o daemon atualmente em execução (ou seja, recém-iniciado) usa sua configuração temporária, porque é a configuração que ele leu; mas um daemon futuro usará a configuração regular porque o arquivo de configuração já foi editado de volta. A configuração temporária não existe mais, exceto na memória do daemon atualmente em execução, portanto, apenas até a próxima
sshd
ou reinicialização do servidor, exatamente como você deseja.(1) e (3) podem ser feitos convenientemente de dentro de uma única instância de um editor de texto, sem sair do editor, se você puder fazer (2) de outro console. Se o seu editor de texto fornecer "desfazer", use-o para cancelar o risco de erro ao editar novamente.
Notas:
sshd
from OpenSSH relê seu arquivo de configuração quando recebe um sinal de desligamento, SIGHUP, executando-se com o nome e as opções com as quais foi iniciado. Independentemente sesshd
o OpenSSH foi iniciado como serviço systemd ou não, esse método deve funcionar.Reiniciar (ou mesmo parar)
sshd
não afeta as conexões existentes .No FreeBSD, o
rc
sistema fornece um mecanismo para passar sinalizadores para osshd
daemon, ou seja, para definir asshd_flags
variável antes de iniciar/reiniciarsshd
. Orc
sistema procurará nomes de arquivos /etc/rc.conf.d/sshd/* e obterá todos esses arquivos em qualquer chamada de 'serviço sshd'. Isso torna bastante trivial criar um nome de arquivo exclusivo único no diretório correto, reiniciar o serviço, excluir esse nome de arquivo exclusivo e pronto.Pelo que sei, reconhecidamente limitado, o Linux carece de um diretório dedicado no qual é possível colocar qualquer número de arquivos com nomes arbitrários com o objetivo de configurar o comportamento de tempo de execução de um daemon específico. Tentei imitar o mecanismo do FreeBSD no (Ubuntu) Linux modificando /etc/default/ssh para procurar e obter arquivos de um local específico (
/etc/default/ssh.tmp.*
), mas não tive sucesso. Geralmente nos sistemas Linux que tenho disponíveis, parece que/etc/default/ssh
nominalmente tem:Em alguns sistemas, parece que o nome da variável chave aqui é
OPTIONS
, então verifique seusystemd
arquivo de serviço parasshd
ter certeza.Dado que o Plano A não funcionou, reduzi minhas expectativas e fui com o Plano B, que é essencialmente o mesmo que modificar o seu,
sshd_config
exceto que, como por padrão/etc/default/ssh
não tem conteúdo, talvez seja um pouco mais seguro anexar as opções de tempo de execução desejadas lá do que é para mexer com seu/etc/ssh/sshd_config
arquivo. Além disso, como a sintaxe de/etc/default/ssh
é a sintaxe do shell, pode-se sentir relativamente seguro de que, ao anexar um valor alterado deSSHD_OPTS
qualquer atribuição anterior de SSHD_OPTS, será substituído para a próxima invocação e, em seguida, será restaurado quando/etc/default/ssh.safety
for renomeado de volta para/etc/default/ssh
.Então partindo de:
E:
Então com:
Pudermos:
Observe aqui que
sshd
está sendo executado com nossas opções de linha de comando de curto prazo desejadas!Observe também que
/etc/default/ssh
está de volta ao seu estado inalterado:O que significa que da próxima vez nós:
Vamos ver:
De volta ao básico,
sshd
serviço de estoque.Novamente, este é essencialmente o mesmo truque que modificar,
/etc/ssh/sshd_config
exceto que, sesshd_config
for corrompido ou excluído (ou mesmo renomeado), você pode ter mais dificuldade em se recuperar disso do que em um/etc/default/ssh
arquivo semelhante. Como/etc/default/ssh
está vazio por padrão, você pode simplesmente,rm
na pior das hipóteses, voltarsshd
a funcionar do jeito que estava antes de começar a tentar fazer truques inteligentes.Não, você não pode alterar as configurações de um daemon sshd atualmente em execução sem editar o arquivo de configuração. O daemon sshd lê sua configuração na inicialização, portanto, quaisquer alterações feitas no arquivo de configuração só terão efeito quando você reiniciar o daemon.
Escreva seu próprio arquivo Unit
mysshd.service
apontando para umsshd_config
arquivo diferente com todas as alterações necessárias e inicie-o. Inclua umConflicts=sshd.service
para que o serviço sshd adequado seja interrompido. Apenas um dos dois serviços pode ser executado por vez. Quando o serviço sshd adequado for reiniciado, mysshd será interrompido.Você também pode adicionar
-o
opções aoExecStart=
e usar osshd_config
arquivo original, conforme feito abaixo. Eles serão considerados primeiro. (Este exemplo é extraído da saída desystemctl cat sshd
. Isso pode diferir em outras distribuições).O elefante na sala é que adicionar um
AllowUsers x@y
permite apenas esse usuário e nenhum outro.