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 / 726005
Accepted
Fco Javier Balón
Fco Javier Balón
Asked: 2022-11-24 03:14:48 +0800 CST2022-11-24 03:14:48 +0800 CST 2022-11-24 03:14:48 +0800 CST

Conexão cliente SSH sem banner (no cliente)

  • 772

Estou desenvolvendo um script simples, que se conecta a determinados computadores e executa, por meio de uma sshsessão, determinados comandos:

sshpass -p 'password' ssh $target_ip << EOF
    echo \$PATH
    # example
    echo \$HOSTNAME
    [...]
EOF

A operação está correta, mas me incomoda que a cada conexão ele mostre o sshbanner do servidor e interfira no restante do script stdout:

Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-81-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Wed Nov 23 11:58:14 CET 2022

  System load:  0.44               Processes:             131
  Usage of /:   9.2% of 108.79GB   Users logged in:       0
  Memory usage: 26%                IPv4 address for br0:  172.16.20.11
  Swap usage:   0%                 IPv4 address for br0:  10.130.1.1
  Temperature:  36.0 C             IPv4 address for tun0: 10.130.0.27

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

241 updates can be installed immediately.
134 of these updates are security updates.
To see these additional updates run: apt list --upgradable


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
New release '22.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

Portanto, não quero que esse banner seja exibido e apenas as saídas dos comandos que executo dentro do arquivo EOF.

Caso seja relevante, a versão do SSH que estou usando é OpenSSH_9.1p1, OpenSSL 3.0.7 1 Nov 2022. No caso do servidor, é OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f 31 Mar 2020.

Não quero retirar o banner do servidor, o que poderia ser feito nas sshdconfigurações. O que eu quero é que o cliente, no script, desabilite a impressão de banners.

No entanto, as opções de linha ssh que funcionaram para outras pessoas (estive aqui e aqui ) não funcionaram para mim:

ssh -o LogLevel=error $ip

Também:

ssh -q $ip

Como posso desabilitar isso no nível do cliente? não há opção ou parâmetro ssh que me permita fazer isso? e em caso de não, como posso redirecionar isso stdoutsem /dev/nulltocar nas saídas dos comandos que executo dentro do EOF?

ssh
  • 1 1 respostas
  • 43 Views

1 respostas

  • Voted
  1. Best Answer
    Kamil Maciorowski
    2022-11-24T03:29:52+08:002022-11-24T03:29:52+08:00

    Um banner antes da autenticação SSH vem da Banneropção sshd_configdo servidor SSH. Sem alterar a configuração do servidor, você não pode fazer com que o servidor não envie para você. Seu cliente deve imprimi-lo para stderr, então 2>/dev/nullirá suprimi-lo localmente, mas também irá suprimir outras mensagens ssh(e sshpassno seu caso) impressões para stderr.

    Um banner após a autenticação SSH provavelmente vem de algum script de inicialização do shell remoto. * Se ssh "$target_ip" datemostrar esse banner, você deve revisar os scripts de inicialização no servidor, encontrar o código responsável por imprimir o banner e corrigi-lo. Se o culpado estiver em algum script global (em /etc), criar um script privado correspondente (em seu $HOME) pode permitir que você altere o comportamento. Consulte a documentação do shell sendo seu shell de login no servidor.

    Se ssh "$target_ip" datenão mostrar o banner, isso significa que o script relevante atual suprime o banner para um shell não interativo. Você pode usar esse fato para silenciar o banner sem alterar nada no servidor.

    Você sshpass -p 'password' ssh $target_ip << EOFnão passa nenhum comando inicial para o lado remoto, então o servidor SSH inicia um shell interativo para você que lê seu stdin e só então o here-document é consumido.

    Para iniciar um shell não interativo, passe um comando. Deve ser o shell que você deseja usar e certifique-se de que ele não seja iniciado interativamente. Provavelmente é melhor não confiar no valor remoto de $SHELLnem nada, porque você sabe localmente para que shell serve seu documento aqui. O shell remoto original não é mais necessário, então execé uma boa ideia.

    No exemplo abaixo, o shell solicitado é bash. Ele não iniciará interativamente porque sua entrada padrão não é um tty (para comparação: o shell remoto que causou o problema foi iniciado interativamente independentemente do tty porque o servidor SSH solicitou isso explicitamente).

    sshpass -p 'password' ssh "$target_ip" 'exec bash' << EOF
        echo \$PATH
        # example
        echo \$HOSTNAME
        [...]
    EOF
    

    * Em geral, o shell padrão formal de alguém em um servidor pode ser qualquer coisa, por exemplo, um wrapper bashque imprime algo incondicionalmente, independentemente dos scripts de inicialização e, em seguida, executa bash. É um cenário exótico, mas possível. Muito provavelmente não é o caso.

    • 2

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

    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