SSH prieigos problemos naudojant savarankiškai priglobtą „Gitea“ serverį

Temp mail SuperHeros
SSH prieigos problemos naudojant savarankiškai priglobtą „Gitea“ serverį
SSH prieigos problemos naudojant savarankiškai priglobtą „Gitea“ serverį

SSH prieigos problemų sprendimas naudojant „Gitea“.

Neseniai sukūriau „Gitea“ serverį naudodamas „Docker“ konteinerį savo vietiniame kompiuteryje. Kad apsaugočiau ryšį, aš taip pat sukonfigūravau Nginx atvirkštinį tarpinį serverį su SSL, kurį teikia Certbot.

Nepaisant to, kad sekiau SSH raktų generavimo pamokas iš „Gitea“ ir „GitHub“, bandydamas prisijungti prie „Gitea“ serverio susidūriau su atmestų leidimų klaidomis. Šiame straipsnyje nagrinėjami veiksmai, kurių ėmiau, ir trikčių šalinimo metodai, kuriuos naudojau SSH prieigos problemoms išspręsti.

komandą apibūdinimas
ssh-keygen Sugeneruoja naują SSH raktų porą saugiems ryšiams.
eval "$(ssh-agent -s)" Paleidžia SSH agentą fone, kad tvarkytų SSH raktus.
ssh-add ~/.ssh/id_rsa Prideda sugeneruotą privatųjį SSH raktą prie SSH agento.
pbcopy < ~/.ssh/id_rsa.pub Nukopijuoja viešąjį SSH raktą į mainų sritį MacOS sistemose.
xclip -sel clip < ~/.ssh/id_rsa.pub Nukopijuoja viešąjį SSH raktą į mainų sritį Linux sistemose naudojant xclip.
proxy_pass Nukreipia užklausą į nurodytą pagrindinį serverį Nginx konfigūracijoje.
paramiko.RSAKey.from_private_key_file Įkelia RSA privatų raktą iš failo, naudojant „Paramiko“ programoje Python.
paramiko.SSHClient().set_missing_host_key_policy Automatiškai prideda serverio pagrindinį raktą, neprašant vartotojo.
chmod 600 ~/.ssh/config Nustato teisingus SSH konfigūracijos failo leidimus, kad jis būtų apsaugotas.

SSH ryšio problemų šalinimas

Ankstesniuose pavyzdžiuose pateikti scenarijai skirti įvairiems Gitea serverio SSH rakto autentifikavimo nustatymo ir trikčių šalinimo aspektams spręsti. Pirmasis scenarijus naudoja „Bash“ scenarijų, kad sugeneruotų SSH raktą ssh-keygen, pridėkite jį prie SSH agento naudodami ssh-addir nukopijuokite viešąjį raktą į mainų sritį naudodami bet kurį pbcopy arba xclip. Šie veiksmai yra labai svarbūs užtikrinant, kad SSH raktas būtų tinkamai nustatytas ir prieinamas naudoti. Antrasis scenarijus sukonfigūruoja „Nginx“ pakeisti tarpinio serverio užklausas „Gitea“ serveriui, užtikrindamas, kad SSL būtų tinkamai tvarkomas ir užklausos būtų tinkamai persiunčiamos proxy_pass.

Python scenarijus trečiajame pavyzdyje naudoja Paramiko biblioteką SSH ryšiui išbandyti. Šis scenarijus įkelia privatųjį raktą naudodamas paramiko.RSAKey.from_private_key_file ir bando prisijungti prie Gitea serverio. Jei nepavyksta prisijungti, pateikiamas klaidos pranešimas, kuris padeda diagnozuoti problemą. Ketvirtasis scenarijus apima SSH konfigūracijos failo atnaujinimą, siekiant užtikrinti, kad būtų nustatyti teisingi nustatymai. Komandos patinka Host, HostName, User, ir IdentityFile naudojami Gitea serverio ryšio detalėms nurodyti. Pagaliau, chmod 600 ~/.ssh/config nustato atitinkamus konfigūracijos failo leidimus, kad jį apsaugotų.

„Gitea“ SSH rakto autentifikavimo nustatymas

„Bash Script“ naudojimas priekinės dalies konfigūravimui

# Step 1: Generate SSH Key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Step 2: Start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Step 3: Add your SSH key to the ssh-agent
ssh-add ~/.ssh/id_rsa
# Step 4: Copy the SSH key to clipboard
pbcopy < ~/.ssh/id_rsa.pub
# If using xclip
xclip -sel clip < ~/.ssh/id_rsa.pub

„Nginx“ atvirkštinio tarpinio serverio konfigūravimas „Gitea“.

Nginx konfigūracijos failo naudojimas

server {
    listen 80;
    server_name your_domain;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name your_domain;
    ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

SSH ryšio problemų diagnostika

Python scenarijaus naudojimas SSH ryšiui išbandyti

import paramiko
def test_ssh_connection(host, port, username, key_path):
    k = paramiko.RSAKey.from_private_key_file(key_path)
    c = paramiko.SSHClient()
    c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        c.connect(hostname=host, port=port, username=username, pkey=k)
        print("SSH connection successful")
    except Exception as e:
        print(f"Failed to connect: {e}")
    finally:
        c.close()
test_ssh_connection('your_domain', 22, 'your_username', '/path/to/id_rsa')

Atnaujinama „Gitea“ skirta SSH konfigūracija

SSH konfigūracijos failo naudojimas

# Open SSH config file
nano ~/.ssh/config
# Add the following configuration
Host gitea_server
    HostName your_domain
    User your_username
    IdentityFile ~/.ssh/id_rsa
# Save and exit
chmod 600 ~/.ssh/config
# Test SSH connection
ssh -T gitea_server

Išplėstinis SSH raktų valdymas, skirtas Gitea

Kitas svarbus Gitea serverio SSH raktų valdymo aspektas yra tinkamas raktų tvarkymas ir sukimas. Reguliarus SSH raktų kaitaliojimas gali padidinti saugumą, nes sumažina pavojų, kad pažeistas raktas bus naudojamas neribotą laiką. Galite sukurti naują raktų porą naudodami ssh-keygen ir atnaujinkite „Gitea“ nustatymus, kad jie atitiktų naująjį raktą. Ši praktika yra labai svarbi norint išlaikyti saugią prieigą prie serverio laikui bėgant. Be to, labai svarbu užtikrinti, kad jūsų SSH raktai būtų saugomi saugiai ir nepatektų į neteisėtus naudotojus. Naudokite tokius įrankius kaip ssh-agent saugiai tvarkyti atmintyje esančius raktus ir nepalikti diske neapsaugotų privačių raktų.

Griežtų leidimų suteikimas SSH raktams ir konfigūracijos failams yra dar vienas saugumo sluoksnis. Komandos patinka chmod 600 ~/.ssh/id_rsa ir chmod 600 ~/.ssh/config apriboti prieigą prie šių failų, todėl neįgaliotiems vartotojams bus sunkiau pasiekti. Be to, galite naudoti kelių veiksnių autentifikavimą (MFA), kad padidintumėte SSH rakto naudojimo saugumą. Įrankius, pvz., „Google“ autentifikavimo priemonę arba aparatūros prieigos raktus, galima integruoti į jūsų SSH sąranką, kad būtų reikalinga antroji patvirtinimo forma, todėl neteisėta prieiga tampa dar sudėtingesnė.

Įprasti SSH prieigos problemų klausimai ir sprendimai

  1. Kodėl gaunu klaidą „Leidimas atmestas“?
  2. Įsitikinkite, kad jūsų SSH raktai yra tinkamai pridėti prie SSH agento, o viešasis raktas yra įtrauktas į jūsų Gitea serverio įgaliotuosius raktus.
  3. Kaip sukurti naują SSH raktų porą?
  4. Naudokite komandą ssh-keygen -t rsa -b 4096 -C "your_email@example.com" Norėdami sukurti naują SSH raktų porą.
  5. Kaip pridėti SSH raktą prie ssh-agent?
  6. Naudokite komandą eval "$(ssh-agent -s)" pradėti agentą ir ssh-add ~/.ssh/id_rsa norėdami pridėti savo raktą.
  7. Kaip galiu nukopijuoti viešąjį SSH raktą į mainų sritį?
  8. Naudokite pbcopy < ~/.ssh/id_rsa.pub „MacOS“ arba xclip -sel clip < ~/.ssh/id_rsa.pub Linux sistemoje.
  9. Ką daryti, jei mano SSH raktas pažeistas?
  10. Sugeneruokite naują SSH raktų porą ir atnaujinkite raktus savo Gitea serveryje ir visose kitose paslaugose, kuriose raktas buvo naudojamas.
  11. Kaip nustatyti teisingus SSH raktų failų leidimus?
  12. Naudokite komandą chmod 600 ~/.ssh/id_rsa kad nustatytumėte tinkamus privačiojo rakto failo teises.
  13. Kodėl baigiasi mano SSH ryšio laikas?
  14. Patikrinkite tinklo ryšį, įsitikinkite, kad veikia Gitea serveris ir kad SSH prievadas yra atviras ir pasiekiamas.
  15. Kaip patikrinti SSH ryšį su serveriu?
  16. Naudokite komandą ssh -T your_username@your_domain norėdami išbandyti ryšį.

Paskutiniai saugaus SSH ryšio žingsniai

Apibendrinant, norint sukurti patikimą SSH ryšį su „Gitea“ serveriu, reikia kruopštaus SSH raktų konfigūravimo, „Nginx“ tarpinio serverio nustatymų ir griežtos saugos praktikos. Atlikdami nurodytus veiksmus, įskaitant SSH raktų generavimą ir tvarkymą, atitinkamų leidimų nustatymą ir tinkamą Nginx konfigūravimą, vartotojai gali užtikrinti saugią ir funkcionalią sąranką. Ryšių tikrinimas naudojant tokius įrankius kaip „Paramiko“ ir reguliariai besisukantys raktai dar labiau padidina saugumą ir patikimumą. Išsamus šių elementų sprendimas padeda išspręsti ryšio problemas ir išlaikyti saugią kūrimo aplinką.