Neomezený e-shopový systém s jednotnou administrací
Zobrazují se odpovědi 1 až 12 z 12

Občasný SSH connection refused

  1. Není tu náhodou nějaký zkušený linuxák, který by odhadl v čem je problém? Ve zkratce, mám udělaný deploy přes SSH a najednou může běžet deploy až 4 komponent najednou na jeden stroj. A občas mi cílový stroj (Ubuntu 18.04.3 LTS) při příkazu

    Kód:
    cat remote-script.sh | ssh -tt -o StrictHostKeyChecking=no deploy@$IP_ADDRESS
    zahlásí ssh: connect to host x.x.x.x port 22: Connection refused.

    Všechny 4 deploy scripty jsou úplně stejné, v podstatě jen zkopírují remote-script.sh na cílový stroj a spustí ho. Můj odhad je, že se nějak sejdou dva pokusy o připojení najednou a tudíž je zrovna port 22 nedostupný. Ale jednak to tím být nemusí, a jednak stejně nevím co s tím. Tak kdyby měl někdo zkušenost nebo nápad, budu nevýslovně vděčný. Díky.

  2. Co se právě děje na Webtrhu?
  3. Pravděpodobně firewall nebo něco podobného blokuje množství přípojení. Případně přímo poskytovatel VPS, pokud se jedná o VPS.

    Neviděl bych to jako problém.

  4. No selhává mi na tom deploy, tak to poměrně problém je. Že je omezený počet připojení je samozřejmě celkem logická úvaha, ale vůbec netuším kudy do toho, nejsem linuxák a dělám to jen proto, že mi nic jiného nezbývá :) Proto se ptám aspoň na nějaké nasměrování. Google nabízí triviální řešení jako že neběží ssh nebo špatné heslo, to mi moc nepomáhá.

  5. Tak to máte špatně napsaný deploy. Řešíte problém tam, kde není. Není odpovědnost serveru, aby vždy přijímal spojení, to ani není technicky možné, ale toho, kdo s ním komunikuje, aby zopakoval svůj požadavek, pokud je zrovna odmítnut.

  6. V tom případě, můžu poprosit o zápis for cyklu třeba na 5 pokusů volání
    Kód:
    cat remote-script.sh | ssh -tt -o StrictHostKeyChecking=no deploy@$IP_ADDRESS
    s nějakým delay mezi jednotlivými pokusy? Předpokládám že v shellu je to triviální ale fakt to neumím :) Díky.

  7. Zkuste něco jako:

    Kód:
    cat remote-script.sh | ssh -tt -o StrictHostKeyChecking=no deploy@$IP_ADDRESS || for i in {1..5}; do !! && break || sleep 5; done
    1..5 jsou opakování
    5 je počet vteřin čekání

  8. Hmmm, tak to je fakt magic :) Díky moc, zkusím a dám vědět

  9. a kde hostuješ? Důvodů může být spousta, ssh daemon má omezený pool spojení (connection refused znamená, že server je dosažitelný, ale na daném portu není aplikace k dispozici) a je vyčerpaný, protože ti tam třeba buší spousty robotů a snaží se ti prolomit ssh přístup. Může to dělat nějaký firewall či cokoliv jako fail2ban.

    Existuje nastavení přímo na straně klienta, aby se spojení zkusilo znovu, nastavit si do konfiguračního soubor ~/.ssh/config něco takovéhoto pro 5 pokusů na připojení:

    Kód:
    Host adresa-serveru
    ConnectionAttempts 5
    exander: nezkoušel jsem, ale tvůj kód nejspíš nebude fungovat, obsah do proměnné !! se uloží až po dokončení celého výrazu, tj. zůstane tam vlastně obsah z minulého řádku (platí pro bash). Raději bych v bash viděl něco takvéhoto s pomocnou funkcí, která sama zkusí připojení 5x:

    Kód:
    function ssh-retry() {
        cnt=0
        false
        while [ $? -ne 0 ] && [ $cnt -lt 3 ]; do
            cnt=$(($cnt+1))
            ssh "$@" || (
                sleep 1
                false
            )
        done
    }
    
    ssh-retry jmeno@adresa-serveru

  10. no a preto su veci ako ansible, salt, terraform a podobne :)

  11. TomášX má pravdu, upraveno, možná i čitelnější:
    Kód:
    for i in {1..5}; do cat remote-script.sh | ssh -tt -o StrictHostKeyChecking=no deploy@$IP_ADDRESS && break || sleep 5; done

  12. Citace Původně odeslal node Zobrazit příspěvek
    no a preto su veci ako ansible, salt, terraform a podobne :)
    no, ani jeden z nich ve výchozím nastavení tohle neřeší a musí se to tam nastavit, stejně jako v openssh klientovi, všichni na to ale nějaké nastavení mají. Terraform je trochu k něčem jinému.

  13. @node, @TomášX: Jedu to přes Gitlab CI/CD, mám lokální runner (protože jejich free build minuty mi nestačí), a hostuju na Digital Ocean na Ubuntu. Žádné sofistikované tooly nevyužíváme. Jako rád bych, ale máme low cost projekt a zatím doufám, že to jednou nějak primitivně nasetupuju a nějakou dobu nám to vydrží. Když se rozjedeme, tak klidně budu platit nějakého devopsáka co to celé vymyslí a bude se o to starat, ale zatím to nejde.

    @exander: zkusím i tenhle magic - tomu už i rozumím :)

Spolupracujeme: Jooble.org, Aximum - profesionální překlady Hostujeme u Server powered by TELE3