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 / 459450
Accepted
Tim Friske
Tim Friske
Asked: 2018-07-31 12:42:07 +0800 CST2018-07-31 12:42:07 +0800 CST 2018-07-31 12:42:07 +0800 CST

Como sair do processo mestre de controle OpenSSH sem usar lsof ou fuser?

  • 772

Existe uma maneira mais direta de sair de um processo mestre de controle OpenSSH e excluir seu arquivo de soquete do que com a ajuda dos programas lsofou fuser e sem conhecer o host de destino (detalhes da conexão), conforme sugerido pela resposta aceita desta pergunta ? Pensei em algo assim na linha de:

$ ssh -O exit -S ~/.ssh/7eb92b0827f3e8e1e8591fb3d1a5cd1b94b758cb.socket

Estou perguntando porque estou procurando uma maneira de script para sair de cada conexão mestre de controle aberto toda vez que eu sair da minha conta de usuário. Não fazer isso faz com que meu computador openSUSE alimentado por sistema aguarde um tempo limite de dois minutos até que ele encerre com força a conexão mestre de controle ainda aberta desligando eventualmente.

Infelizmente , o programa cliente do OpenSSHssh requer o host de destinoControlPath e o padrão de nome de arquivo para deduzir o caminho real do arquivo para o arquivo de soquete. Eu, pelo contrário, pensei no método mais direto de fornecer o arquivo de soquete concreto através da -S ctl_pathopção do programa.

Na seção global do meu arquivo de configuração do cliente OpenSSH em todo o sistema, configurei o recurso de multiplexação de conexão do OpenSSH da seguinte maneira:

ControlMaster auto      
ControlPath ~/.ssh/%C.socket
ControlPersist 30m

Por favor, note que eu quero manter o padrão de nome de arquivo para arquivos de soquete, ou seja, fazer o hash da string do token %l%h%p%rcom o token %C.

Alguma ideia?

ssh openssh
  • 2 2 respostas
  • 2683 Views

2 respostas

  • Voted
  1. Best Answer
    slm
    2018-07-31T15:20:50+08:002018-07-31T15:20:50+08:00

    Isso funciona para mim usando apenas o arquivo de soquete para o mestre de controle:

    $ ssh -o ControlPath=~/.ssh/<controlfile> -O check <bogus arg>
    

    NOTA: Você também pode usar ssh -S ~/.ssh/<controlfile> ..., que é uma forma um pouco mais curta do acima.

    Exemplo

    Aqui está um exemplo em que já estabeleci uma conexão com um servidor remoto:

    $ ssh -S ~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check blah
    Master running (pid=89228)
    $
    

    E com ele desconectado:

    $ ssh -S ~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O check blah
    Control socket connect(/Users/user1/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74): No such file or directory
    $
    

    Se ainda estivesse conectado, isso o forçaria a sair imediatamente:

    $ ssh -S ~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O exit blah
    Exit request sent.
    $
    

    Não está claro para mim, mas parece ser potencialmente um bug, ssh pois requer um argumento adicional no final, mesmo que blahnão tenha sentido no contexto dos switches que estou usando.

    Sem ele me dá isso:

    $ ssh -S ~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check
    usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
               [-D [bind_address:]port] [-E log_file] [-e escape_char]
               [-F configfile] [-I pkcs11] [-i identity_file]
               [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
               [-O ctl_cmd] [-o option] [-p port]
               [-Q cipher | cipher-auth | mac | kex | key]
               [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
               [-w local_tun[:remote_tun]] [user@]hostname [command]
    

    Informação da versão

    OSX
    $ ssh -V
    OpenSSH_6.9p1, LibreSSL 2.1.8
    
    CentOS 7.x
    $ ssh -V
    OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
    

    Confirmei que em ambas as versões, a necessidade do argumento falso adicional era necessária.

    ATUALIZAÇÃO #1

    Eu levantei isso como um bug em potencial para o upstream do OpenSSH e eles responderam da seguinte forma:

    Sim - isso é intencional.

    ControlPath pode conter %-expansões que precisam de um nome de host para expandir totalmente.

    Podemos verificar se o ControlPath realmente precisa disso e tornar o nome do host opcional, mas 1) ControlPaths que usam %h são comuns e 2) prefiro não tornar o argumento de análise de código mais um labirinto do que já é.

    Referências

    • Como saber se uma conexão ssh ControlMaster está em uso
    • Como fechar (matar) conexões ssh ControlMaster manualmente
    • 9
  2. TimZehta
    2019-01-13T08:02:12+08:002019-01-13T08:02:12+08:00

    Eu escrevi um utilitário que facilita o gerenciamento de conexões SSH ControlMaster. Chama-se cmc: TimidRobot/cmc: ControlMaster ControlMaster - Facilita o gerenciamento de conexões SSH ControlMaster .

    • 0

relate perguntas

  • Por que o utilitário ssh é considerado um pty?

  • Auto-SSH funciona manualmente, mas não em segundo plano

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

  • rsync porta 22 e 873 uso

  • Aborto repentino do SCP: tubo quebrado, código de autenticação de mensagem incorreto

Sidebar

Stats

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

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

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 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

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 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
    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
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +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
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +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