SSH piekļuves problēmu risināšana ar Gitea
Nesen es iestatīju Gitea serveri, izmantojot Docker konteineru savā vietējā mašīnā. Lai nodrošinātu savienojumu, es arī konfigurēju Nginx reverso starpniekserveri ar SSL, ko nodrošina Certbot.
Neskatoties uz to, ka sekoju SSH atslēgu ģenerēšanas pamācībām no Gitea un GitHub, mēģinot izveidot savienojumu ar Gitea serveri, es saskāros ar liegtas atļaujas kļūdām. Šajā rakstā ir apskatītas darbības, ko es veicu, un problēmu novēršanas metodes, ko izmantoju, lai atrisinātu SSH piekļuves problēmas.
Pavēli | Apraksts |
---|---|
ssh-keygen | Ģenerē jaunu SSH atslēgu pāri drošiem savienojumiem. |
eval "$(ssh-agent -s)" | Palaiž SSH aģentu fonā, lai pārvaldītu SSH atslēgas. |
ssh-add ~/.ssh/id_rsa | Pievieno ģenerēto SSH privāto atslēgu SSH aģentam. |
pbcopy < ~/.ssh/id_rsa.pub | Kopē SSH publisko atslēgu starpliktuvē MacOS sistēmās. |
xclip -sel clip < ~/.ssh/id_rsa.pub | Kopē SSH publisko atslēgu starpliktuvē Linux sistēmās, izmantojot xclip. |
proxy_pass | Novirza pieprasījumu uz norādīto aizmugursistēmas serveri Nginx konfigurācijā. |
paramiko.RSAKey.from_private_key_file | Ielādē RSA privāto atslēgu no faila, izmantojot Paramiko programmā Python. |
paramiko.SSHClient().set_missing_host_key_policy | Automātiski pievieno servera resursdatora atslēgu, neprasot lietotājam. |
chmod 600 ~/.ssh/config | Iestata pareizās atļaujas SSH konfigurācijas failam, lai to aizsargātu. |
SSH savienojuma problēmu novēršana
Iepriekšējos piemēros sniegtie skripti ir izstrādāti, lai risinātu dažādus Gitea servera SSH atslēgas autentifikācijas iestatīšanas un problēmu novēršanas aspektus. Pirmais skripts izmanto Bash skriptu, lai ģenerētu SSH atslēgu ar ssh-keygen, pievienojiet to SSH aģentam ar ssh-addun kopējiet publisko atslēgu starpliktuvē, izmantojot jebkuru no tām pbcopy vai xclip. Šīs darbības ir ļoti svarīgas, lai nodrošinātu, ka SSH atslēga ir pareizi iestatīta un pieejama lietošanai. Otrais skripts konfigurē Nginx, lai apgrieztu starpniekservera pieprasījumus Gitea serverim, nodrošinot, ka SSL tiek pareizi apstrādāts un pieprasījumi tiek pareizi pārsūtīti ar proxy_pass.
Python skripts trešajā piemērā izmanto Paramiko bibliotēku, lai pārbaudītu SSH savienojumu. Šis skripts ielādē privāto atslēgu, izmantojot paramiko.RSAKey.from_private_key_file un mēģina izveidot savienojumu ar Gitea serveri. Ja savienojums neizdodas, tiek parādīts kļūdas ziņojums, kas palīdz diagnosticēt problēmu. Ceturtais skripts ietver SSH konfigurācijas faila atjaunināšanu, lai nodrošinātu, ka ir pareizi iestatījumi. Komandas patīk Host, HostName, User, un IdentityFile tiek izmantoti, lai norādītu Gitea servera savienojuma informāciju. Visbeidzot, chmod 600 ~/.ssh/config iestata atbilstošās atļaujas konfigurācijas failam, lai to aizsargātu.
SSH atslēgas autentifikācijas iestatīšana Gitea
Bash skripta izmantošana frontend konfigurācijai
# 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 reversā starpniekservera konfigurēšana Gitea
Izmantojot Nginx konfigurācijas failu
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 savienojuma problēmu diagnostika
Python skripta izmantošana SSH savienojamības pārbaudei
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')
Tiek atjaunināta Gitea SSH konfigurācija
Izmantojot SSH konfigurācijas failu
# 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
Uzlabota SSH atslēgu pārvaldība Gitea
Vēl viens svarīgs Gitea servera SSH atslēgu pārvaldības aspekts ir pareiza atslēgu apstrāde un pagriešana. Regulāra SSH atslēgu rotācija var uzlabot drošību, samazinot risku, ka apdraudēta atslēga tiks izmantota bezgalīgi. Varat izveidot jaunu atslēgu pāri, izmantojot ssh-keygen un atjauniniet savus Gitea iestatījumus, lai atspoguļotu jauno atslēgu. Šī prakse ir ļoti svarīga, lai laika gaitā uzturētu drošu piekļuvi jūsu serverim. Turklāt ir ļoti svarīgi nodrošināt, lai jūsu SSH atslēgas tiktu glabātas droši un netiktu pakļautas neautorizētiem lietotājiem. Izmantojiet tādus rīkus kā ssh-agent lai droši pārvaldītu atslēgas atmiņā un izvairītos no privāto atslēgu atstāšanas diskā neaizsargātā stāvoklī.
Stingru atļauju ieviešana SSH atslēgām un konfigurācijas failiem ir vēl viens drošības līmenis. Komandas patīk chmod 600 ~/.ssh/id_rsa un chmod 600 ~/.ssh/config ierobežot piekļuvi šiem failiem, tādējādi neautorizētiem lietotājiem ir grūtāk piekļūt. Turklāt varat izmantot vairāku faktoru autentifikāciju (MFA), lai SSH atslēgas lietojumam pievienotu papildu drošības līmeni. Tādus rīkus kā Google autentifikators vai aparatūras marķieri var integrēt jūsu SSH iestatījumos, lai pieprasītu otru verifikācijas veidu, padarot nesankcionētu piekļuvi vēl grūtāku.
Bieži uzdotie jautājumi un risinājumi SSH piekļuves problēmām
- Kāpēc tiek parādīts kļūdas ziņojums “Atļauja liegta”?
- Pārliecinieties, vai jūsu SSH atslēgas ir pareizi pievienotas SSH aģentam un publiskā atslēga ir pievienota jūsu Gitea servera autorizētajām atslēgām.
- Kā ģenerēt jaunu SSH atslēgu pāri?
- Izmantojiet komandu ssh-keygen -t rsa -b 4096 -C "your_email@example.com" lai ģenerētu jaunu SSH atslēgu pāri.
- Kā es varu pievienot savu SSH atslēgu ssh-agent?
- Izmantojiet komandu eval "$(ssh-agent -s)" lai sāktu aģentu un ssh-add ~/.ssh/id_rsa lai pievienotu savu atslēgu.
- Kā es varu kopēt savu SSH publisko atslēgu starpliktuvē?
- Izmantot pbcopy < ~/.ssh/id_rsa.pub operētājsistēmā macOS vai xclip -sel clip < ~/.ssh/id_rsa.pub operētājsistēmā Linux.
- Kas man jādara, ja mana SSH atslēga ir apdraudēta?
- Ģenerējiet jaunu SSH atslēgu pāri un atjauniniet atslēgas savā Gitea serverī un visos citos pakalpojumos, kuros atslēga tika izmantota.
- Kā es varu iestatīt pareizās atļaujas saviem SSH atslēgu failiem?
- Izmantojiet komandu chmod 600 ~/.ssh/id_rsa lai iestatītu atbilstošas atļaujas savam privātās atslēgas failam.
- Kāpēc manam SSH savienojumam iestājas taimauts?
- Pārbaudiet tīkla savienojumu, vai Gitea serveris darbojas un SSH ports ir atvērts un pieejams.
- Kā pārbaudīt SSH savienojumu ar serveri?
- Izmantojiet komandu ssh -T your_username@your_domain lai pārbaudītu savienojumu.
Pēdējie soļi drošam SSH savienojumam
Visbeidzot, lai izveidotu uzticamu SSH savienojumu ar Gitea serveri, ir nepieciešama rūpīga SSH atslēgu konfigurēšana, Nginx starpniekservera iestatījumi un stingra drošības prakse. Veicot norādītās darbības, tostarp ģenerējot un pārvaldot SSH atslēgas, iestatot atbilstošas atļaujas un pareizi konfigurējot Nginx, lietotāji var nodrošināt drošu un funkcionālu iestatīšanu. Savienojumu pārbaude ar tādiem rīkiem kā Paramiko un regulāri rotējošām atslēgām vēl vairāk uzlabo drošību un uzticamību. Šo elementu visaptveroša risināšana palīdz atrisināt savienojuma problēmas un uzturēt drošu izstrādes vidi.