AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 726964
Accepted
400 the Cat
400 the Cat
Asked: 2022-12-02 07:12:39 +0800 CST2022-12-02 07:12:39 +0800 CST 2022-12-02 07:12:39 +0800 CST

sshd: adiciona AllowUsers para a sessão atual, sem editar sshd_config

  • 772

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_confige, 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?

command-line
  • 4 4 respostas
  • 89 Views

4 respostas

  • Voted
  1. Kamil Maciorowski
    2022-12-06T15:06:37+08:002022-12-06T15:06:37+08:00

    e então lembre-se de removê-lo

    Remova-o imediatamente, para que não haja nada para lembrar, nada para esquecer. Quero dizer:

    1. Edite sshd_config, salve as alterações.
    2. Reinicie o daemon.
    3. Edite imediatamentesshd_config , salve as alterações.
    4. Não reinicie o daemon.

    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 sshdou 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:

    • sshdfrom 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 se sshdo 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 .

    • 4
  2. Best Answer
    Jim L.
    2022-12-09T16:57:33+08:002022-12-09T16:57:33+08:00

    No FreeBSD, o rcsistema fornece um mecanismo para passar sinalizadores para o sshddaemon, ou seja, para definir a sshd_flagsvariável antes de iniciar/reiniciar sshd. O rcsistema 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/sshnominalmente tem:

    # Default settings for openssh-server. This file is sourced by /bin/sh from
    # /etc/init.d/ssh.
    
    # Options to pass to sshd
    SSHD_OPTS=
    

    Em alguns sistemas, parece que o nome da variável chave aqui é OPTIONS, então verifique seu systemdarquivo de serviço para sshdter 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_configexceto que, como por padrão /etc/default/sshnã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_configarquivo. 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 de SSHD_OPTSqualquer atribuição anterior de SSHD_OPTS, será substituído para a próxima invocação e, em seguida, será restaurado quando /etc/default/ssh.safetyfor renomeado de volta para /etc/default/ssh.

    # cat << EOF > test.sh
    cp -p /etc/default/ssh /etc/default/ssh.safety
    printf 'SSHD_OPTS='\''-o "AllowUsers [email protected]"'\''\n' >> /etc/default/ssh
    service sshd restart
    mv /etc/default/ssh.safety /etc/default/ssh
    EOF
    

    Então partindo de:

    # service ssh status
    ● ssh.service - OpenBSD Secure Shell server
       Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2022-12-08 16:36:00 PST; 51s ago
      Process: 43364 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
     Main PID: 43367 (sshd)
        Tasks: 1 (limit: 9830)
       CGroup: /system.slice/ssh.service
               └─43367 /usr/sbin/sshd -D
    
    ...snip...
    

    E:

    # cat /etc/default/ssh 
    # Default settings for openssh-server. This file is sourced by /bin/sh from
    # /etc/init.d/ssh.
    
    # Options to pass to sshd
    SSHD_OPTS=
    

    Então com:

    # cat test.sh
    cp -p /etc/default/ssh /etc/default/ssh.safety
    printf 'SSHD_OPTS='\''-o "AllowUsers [email protected]"'\''\n' >> /etc/default/ssh
    service ssh restart
    mv /etc/default/ssh.safety /etc/default/ssh
    

    Pudermos:

    # sh test.sh
    # service ssh status
    ● ssh.service - OpenBSD Secure Shell server
       Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2022-12-08 16:37:42 PST; 3min 2s ago
      Process: 54918 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
     Main PID: 54923 (sshd)
        Tasks: 1 (limit: 9830)
       CGroup: /system.slice/ssh.service
               └─54923 /usr/sbin/sshd -D -o AllowUsers [email protected]
    
    ...snip...
    

    Observe aqui que sshdestá sendo executado com nossas opções de linha de comando de curto prazo desejadas!

    Observe também que /etc/default/sshestá de volta ao seu estado inalterado:

    # cat /etc/default/ssh 
    # Default settings for openssh-server. This file is sourced by /bin/sh from
    # /etc/init.d/ssh.
    
    # Options to pass to sshd
    SSHD_OPTS=
    

    O que significa que da próxima vez nós:

    # service ssh restart
    

    Vamos ver:

    # service ssh status
    ● ssh.service - OpenBSD Secure Shell server
       Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2022-12-08 16:43:56 PST; 7s ago
      Process: 44890 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
     Main PID: 44896 (sshd)
        Tasks: 1 (limit: 9830)
       CGroup: /system.slice/ssh.service
               └─44896 /usr/sbin/sshd -D
    

    De volta ao básico, sshdserviço de estoque.

    Novamente, este é essencialmente o mesmo truque que modificar, /etc/ssh/sshd_configexceto que, se sshd_configfor corrompido ou excluído (ou mesmo renomeado), você pode ter mais dificuldade em se recuperar disso do que em um /etc/default/ssharquivo semelhante. Como /etc/default/sshestá vazio por padrão, você pode simplesmente, rmna pior das hipóteses, voltar sshda funcionar do jeito que estava antes de começar a tentar fazer truques inteligentes.

    • 3
  3. DotNetRussell
    2022-12-05T03:39:15+08:002022-12-05T03:39:15+08:00

    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.

    • 1
  4. meuh
    2022-12-12T02:16:24+08:002022-12-12T02:16:24+08:00

    Escreva seu próprio arquivo Unit mysshd.serviceapontando para um sshd_configarquivo diferente com todas as alterações necessárias e inicie-o. Inclua um Conflicts=sshd.servicepara 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 -oopções ao ExecStart=e usar o sshd_configarquivo original, conforme feito abaixo. Eles serão considerados primeiro. (Este exemplo é extraído da saída de systemctl cat sshd. Isso pode diferir em outras distribuições).

    cat >/etc/systemd/system/mysshd.service <<\!
    [Unit]
    Description=my let root in OpenSSH server daemon
    Conflicts=sshd.service
    [Service]
    Type=notify
    EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
    EnvironmentFile=-/etc/sysconfig/sshd
    ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY -o 'AllowUsers [email protected]'
    ExecReload=/bin/kill -HUP $MAINPID
    KillMode=process
    !
    systemctl daemon-reload
    systemctl start mysshd
    

    O elefante na sala é que adicionar um AllowUsers x@ypermite apenas esse usuário e nenhum outro.

    • 0

relate perguntas

  • O comando ip suporta curingas?

  • Qual é a interface recomendada para um utilitário que requer muitos parâmetros? [fechado]

  • Execute o aplicativo X remotamente, execute a GUI no host remoto [fechado]

  • Fazendo mysql CLI me pedir uma senha interativamente

  • Pub / sub de linha de comando sem um servidor?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve