Kendi Kendine Barındırılan Gitea Sunucusunda SSH Erişim Sorunları

Temp mail SuperHeros
Kendi Kendine Barındırılan Gitea Sunucusunda SSH Erişim Sorunları
Kendi Kendine Barındırılan Gitea Sunucusunda SSH Erişim Sorunları

Gitea ile SSH Erişim Sorunlarını Çözme

Yakın zamanda yerel makinemde Docker konteynerini kullanarak bir Gitea sunucusu kurdum. Bağlantıyı güvence altına almak için ayrıca Certbot tarafından sağlanan SSL ile bir Nginx ters proxy yapılandırdım.

Gitea ve GitHub'un SSH anahtar oluşturma eğitimlerini takip etmeme rağmen Gitea sunucusuna bağlanmaya çalışırken izin reddedildi hatalarıyla karşılaştım. Bu makalede SSH erişim sorunlarını çözmek için attığım adımlar ve kullandığım sorun giderme yöntemleri anlatılmaktadır.

Emretmek Tanım
ssh-keygen Güvenli bağlantılar için yeni bir SSH anahtar çifti oluşturur.
eval "$(ssh-agent -s)" SSH anahtarlarını yönetmek için arka planda SSH aracısını başlatır.
ssh-add ~/.ssh/id_rsa Oluşturulan SSH özel anahtarını SSH aracısına ekler.
pbcopy < ~/.ssh/id_rsa.pub SSH ortak anahtarını macOS sistemlerindeki panoya kopyalar.
xclip -sel clip < ~/.ssh/id_rsa.pub SSH ortak anahtarını xclip kullanarak Linux sistemlerindeki panoya kopyalar.
proxy_pass İsteği Nginx yapılandırmasında belirtilen arka uç sunucusuna yönlendirir.
paramiko.RSAKey.from_private_key_file Python'da Paramiko'yu kullanarak bir dosyadan bir RSA özel anahtarı yükler.
paramiko.SSHClient().set_missing_host_key_policy Kullanıcıya sormadan sunucunun ana bilgisayar anahtarını otomatik olarak ekler.
chmod 600 ~/.ssh/config SSH yapılandırma dosyasının güvenliğini sağlamak için doğru izinleri ayarlar.

SSH Bağlantı Sorunlarını Giderme

Önceki örneklerde sağlanan komut dosyaları, bir Gitea sunucusu için SSH anahtar kimlik doğrulamasını ayarlamanın ve sorun gidermenin çeşitli yönlerini ele almak üzere tasarlanmıştır. İlk komut dosyası, bir SSH anahtarı oluşturmak için bir Bash komut dosyası kullanır. ssh-keygenile SSH aracısına ekleyin ssh-addve genel anahtarı panoya kopyalayın pbcopy veya xclip. Bu adımlar, SSH anahtarının doğru şekilde kurulduğundan ve kullanıma hazır olduğundan emin olmak için çok önemlidir. İkinci komut dosyası, Nginx'i Gitea sunucusuna proxy isteklerini tersine çevirecek şekilde yapılandırarak SSL'nin doğru şekilde işlenmesini ve isteklerin doğru şekilde iletilmesini sağlar. proxy_pass.

Üçüncü örnekteki Python betiği, SSH bağlantısını test etmek için Paramiko kütüphanesini kullanıyor. Bu komut dosyası özel anahtarı kullanarak yükler paramiko.RSAKey.from_private_key_file ve Gitea sunucusuna bağlanmaya çalışır. Bağlantı başarısız olursa sorunun teşhis edilmesine yardımcı olan bir hata mesajı görüntülenir. Dördüncü komut dosyası, doğru ayarların yapıldığından emin olmak için SSH yapılandırma dosyasının güncellenmesini içerir. Gibi komutlar Host, HostName, User, Ve IdentityFile Gitea sunucusunun bağlantı ayrıntılarını belirtmek için kullanılır. Nihayet, chmod 600 ~/.ssh/config yapılandırma dosyasının güvenliğini sağlamak için uygun izinleri ayarlar.

Gitea için SSH Anahtar Kimlik Doğrulamasını Ayarlama

Ön Uç Yapılandırması için Bash Komut Dosyasını Kullanma

# 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

Gitea için Nginx Ters Proxy'yi Yapılandırma

Nginx Yapılandırma Dosyasını Kullanma

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 Bağlantı Sorunlarını Teşhis Etme

SSH Bağlantısını Test Etmek İçin Python Komut Dosyası Kullanma

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')

Gitea için SSH Yapılandırmasını Güncelleme

SSH Yapılandırma Dosyasını Kullanma

# 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

Gitea için Gelişmiş SSH Anahtar Yönetimi

Gitea sunucusu için SSH anahtarlarını yönetmenin bir diğer önemli yönü, anahtarların doğru şekilde kullanılması ve döndürülmesidir. SSH anahtarlarınızı düzenli olarak döndürmek, güvenliği ihlal edilmiş bir anahtarın süresiz olarak kullanılması riskini azaltarak güvenliği artırabilir. kullanarak yeni bir anahtar çifti oluşturabilirsiniz. ssh-keygen ve Gitea ayarlarınızı yeni anahtarı yansıtacak şekilde güncelleyin. Bu uygulama, zaman içinde sunucunuza güvenli erişimi sürdürmek için çok önemlidir. Ayrıca SSH anahtarlarınızın güvenli bir şekilde saklanmasını ve yetkisiz kullanıcıların eline geçmemesini sağlamak hayati önem taşır. Gibi araçları kullanın ssh-agent anahtarları bellekte güvenli bir şekilde yönetmek ve özel anahtarların diskte korumasız bir durumda bırakılmasını önlemek için.

SSH anahtarlarınıza ve yapılandırma dosyalarınıza katı izinler uygulamak başka bir güvenlik katmanıdır. Gibi komutlar chmod 600 ~/.ssh/id_rsa Ve chmod 600 ~/.ssh/config bu dosyalara erişimi kısıtlayarak yetkisiz kullanıcıların erişim kazanmasını zorlaştırın. Ayrıca, SSH anahtar kullanımınıza ekstra bir güvenlik katmanı eklemek için çok faktörlü kimlik doğrulamayı (MFA) kullanabilirsiniz. Google Authenticator veya donanım belirteçleri gibi araçlar, ikinci bir doğrulama biçimi gerektirecek şekilde SSH kurulumunuza entegre edilebilir, bu da yetkisiz erişimi daha da zorlaştırır.

SSH Erişim Sorunlarına İlişkin Yaygın Sorular ve Çözümler

  1. Neden "İzin reddedildi" hatası alıyorum?
  2. SSH anahtarlarınızın SSH aracısına doğru şekilde eklendiğinden ve genel anahtarın Gitea sunucunuzun yetkili anahtarlarına eklendiğinden emin olun.
  3. Yeni bir SSH anahtar çiftini nasıl oluşturabilirim?
  4. Komutu kullanın ssh-keygen -t rsa -b 4096 -C "your_email@example.com" yeni bir SSH anahtar çifti oluşturmak için.
  5. SSH anahtarımı ssh-agent'a nasıl eklerim?
  6. Komutu kullanın eval "$(ssh-agent -s)" aracıyı başlatmak ve ssh-add ~/.ssh/id_rsa Anahtarınızı eklemek için.
  7. SSH genel anahtarımı panoya nasıl kopyalayabilirim?
  8. Kullanmak pbcopy < ~/.ssh/id_rsa.pub macOS'ta veya xclip -sel clip < ~/.ssh/id_rsa.pub Linux'ta.
  9. SSH anahtarımın güvenliği ihlal edilirse ne yapmalıyım?
  10. Yeni bir SSH anahtar çifti oluşturun ve Gitea sunucunuzdaki ve anahtarın kullanıldığı diğer tüm hizmetlerdeki anahtarları güncelleyin.
  11. SSH anahtar dosyalarımda doğru izinleri nasıl ayarlayabilirim?
  12. Komutu kullanın chmod 600 ~/.ssh/id_rsa özel anahtar dosyanızda uygun izinleri ayarlamak için.
  13. SSH bağlantım neden zaman aşımına uğruyor?
  14. Ağ bağlantınızı kontrol edin, Gitea sunucusunun çalıştığından ve SSH bağlantı noktasının açık ve erişilebilir olduğundan emin olun.
  15. Sunucuyla SSH bağlantımı nasıl test ederim?
  16. Komutu kullanın ssh -T your_username@your_domain bağlantıyı test etmek için.

SSH Bağlantısını Güvenli Hale Getirmenin Son Adımları

Sonuç olarak, Gitea sunucusuna güvenilir bir SSH bağlantısı kurmak, SSH anahtarlarının, Nginx proxy ayarlarının ve sıkı güvenlik uygulamalarının dikkatli bir şekilde yapılandırılmasını gerektirir. Kullanıcılar, SSH anahtarlarının oluşturulması ve yönetilmesi, uygun izinlerin ayarlanması ve Nginx'in doğru şekilde yapılandırılması dahil olmak üzere özetlenen adımları izleyerek güvenli ve işlevsel bir kurulum sağlayabilirler. Bağlantıların Paramiko gibi araçlarla test edilmesi ve anahtarların düzenli olarak döndürülmesi, güvenliği ve güvenilirliği daha da artırır. Bu unsurların kapsamlı bir şekilde ele alınması, bağlantı sorunlarının çözülmesine ve güvenli bir geliştirme ortamının sürdürülmesine yardımcı olur.