Bir Github Eyleminde SSH ve Rsync aracılığıyla bir sunucuya dağıtım

0
33

17 Mart 2021

Zellwk.com’u dağıtmak için Github Actions’ı kullanmak istedim – Github’a bir taahhüt verdiğimde, Github Actions’ın sitemi oluşturmasını ve Digital Ocean sunucuma dağıtmasını istiyorum.

Bu sürecin en zor kısmı sunucuya SSH ve rsync ile konuşlandırmaktır. SSH Dağıtımı ve SSH Eylemi gibi çeşitli Github eylemlerini denedim, ancak UZUN SÜRE için çalışma izinlerini alamadım.

Github eylemleri hakkında çoğu makale buldum ve SSH bana pek yardımcı olmadı. Sonunda sürecin nasıl işleyeceğini bulmadan önce birkaç gün boyunca hata ayıklama ile sıkışıp kaldım.

Bugün, rsync ve SSH aracılığıyla dağıtım için kesin adımları paylaşmak istiyorum. Bu işlem, Digital Ocean kullanmasanız bile herhangi bir sunucu için çalışır.

1. Adım: Bir SSH Anahtarı Oluşturun

SSH anahtarını yerel bilgisayarınızda veya sunucunuzda oluşturabilirsiniz. Daha sonra anahtarı silebileceğimiz için önemli değil, ancak SSH anahtarınızı diğer Github Eylemleri için yeniden kullanabilmeniz için bunu sunucuda yapmanızı öneririm.

Bu durumda sunucuya SSH uygulayacağız.

ssh [email protected]

Sunucuya girdikten sonra, .ssh klasörüne gidin. SSH anahtarını burada oluşturacağız.

cd ~ / .ssh

SSH Anahtarını oluşturduğumuzda, Github’ın bir SSH anahtar sayfası oluşturma konusundaki varsayılan talimatları kullanamayız. Bunun nedeni, Github Actions’ın en son Ed22159 algoritmasını desteklememesidir. Bunun yerine eski komutu kullanmamız gerekiyor.

İşte kullanmanız gereken komut. Değiştirmeyi unutma [email protected] e-posta adresinizle.

ssh-keygen -t rsa -b 4096 -C “[email protected]”

Not: Bazı Github Action yazarları, SSH anahtarlarının çalışması için PEM formatına ihtiyacımız olduğunu söyledi. Bu yanlış. Standart RSA formatıyla (yukarıda tavsiye ettiğim) test ettim ve işe yarıyor.

Daha sonra SSH Anahtar dosyasını adlandırmamız gerekiyor. Burada, varsayılan dosya adını (id_rsa olan) kullanmanızı önermiyorum. Dosya adını github eylemleri olarak değiştirmenizi öneririm, böylece bu anahtarın Github Eylemleri için kullanıldığını biliyoruz. SSH anahtarlarınızı yolun 6 ay aşağısında görüntülediğinizde açıkça belirtmeniz gerekir.

ssh anahtar dosyası adı

Ayrıca bir parola girmeniz de istenecektir. Github Eylemleri bizim için SSH komutunu çalıştırdığında şifre giremeyeceğimiz için bunu boş bırakın.

parolayı boş bırakın

SSH anahtarlarınızı oluşturmayı tamamladığınızda, şöyle sevimli bir görüntü elde etmelisiniz:

ssh anahtar randomart görüntüsü

Şimdi ls komutunu kullanırsanız, anahtarlarınızı .ssh klasöründe görmelisiniz.

ls

Genel anahtar bir .pub uzantısı içerirken özel anahtar içermez.

genel anahtarın uzantısı .pub'a sahiptir

2. Adım: Yetkili anahtarlara Genel Anahtarı Ekleme

Özel anahtarı (github-actions) kullanan makinelerin sunucuya erişebilmesi için public anahtarı (github-actions.pub) yetkili_keys’e eklememiz gerekir.

En kolay yol, github-actions.pub’ı yetkili_keys içine eklemek için bir cat komutu kullanmaktır. Şöyle görünüyor:

kedi github.pub >> yetkili_keys

İşte komutun yaptığı şey:

Github.pub içeriğini cat ile alın. Yetkili anahtarlara >> ile ekleyin.

Not: Tek açılı ayraçlar (>) değil, çift dik açılı ayraçlar (>>) kullandığınızdan emin olun. Çift, eklemek, tek ise üzerine yazmak anlamına gelir. Dikkatli ol!

Adım 3: Özel anahtarı deponuzun sırlarına ekleme

Github’daki deponuza gidin ve “Ayarlar” a, ardından “Sırlar” a tıklayın. “Yeni depo sırrı” yazan bir düğme görmelisiniz.

github ayarları navigasyon konumu

github sırları navigasyon konumu

yeni kod deposu gizli düğme konumu

“Yeni depo sırrı” na tıklayın ve bir sır girmeniz istenecektir. Bu sır iki şey içerir – gizli bir isim ve içindekiler. Gizli ad, içerikleri daha sonra bir Github Actions iş akışında almak için kullanılır.

yeni bir depo sırrı eklemek

Gizli adınızı yazarken, lütfen boşluk olarak alt çizgi içeren büyük harfler kullanın (yer tutucuda gösterildiği gibi). Bu, genellikle sırları belirtmek için kullandığımız bir biçimdir.

Bu durumda, gizli SSH_PRIVATE_KEY adını vermeyi seçtim.

Değer için, sunucunuza geri dönmemiz ve github-actions özel anahtarını açmamız gerekiyor. Bunu nano ile yapabiliriz ..

nano github eylemleri

Buna benzer bir dosya göreceksiniz. (Bu anahtarı ifşa etmem konusunda endişelenmeyin, onu çoktan çöpe attım. Size tam olarak ne bekleyeceğinizi göstermek istedim :)).

github eylemleri özel anahtarı

Her şeyi kopyalayıp Gizli değerin içine yapıştırmalıyız

özel anahtarı gizli değerin içine yapıştırın

Anahtarı şu şekilde kullanabiliriz:

Ardından, “Sır ekle” yi tıklayın ve sırlar sayfasına geri döneceksiniz. Burada, deponun sırları altında SSH_PRIVATE_KEY göreceksiniz.

kaydedilmiş gizli ssh-özel-anahtarı

Adım 4: Özel anahtarı bir Github Eylemler İş Akışına Ekleme

Temel bir Github Eylemler dosyasını nasıl oluşturacağınızı zaten bildiğinizi varsayıyorum, bu nedenle burada yalnızca SSH Anahtarını eklemek için gereken adımlardan bahsedeceğim.

Özel anahtarı eklemek karmaşık bir iştir, burada mevcut Github Eylemlerini aramayı seçtim. Benim için işe yarayan tek eylem Shimataro’nun SSH Anahtarını Kurmaktı.

adımlar: – ad: SSH Anahtarını Yükle kullanım: shimataro /[email protected]

SSH Anahtarını Yükle işlemi iki giriş gerektirir – anahtar ve bilinen_ ana makine değeri.

anahtar, Github Secrets’e eklediğimiz özel anahtardır. Sırları şöyle kullanabiliriz:

adımlar: – ad: SSH Anahtarını Yükle kullanım: shimataro /[email protected]
ile: anahtar: $

Bilinen_hosts değeri, tuhaf bir karma değerdir. .Ssh sunucusunda bilinen bir ana makine dosyası açarsanız, şuna benzer bir şey görürsünüz:

bilinen ana bilgisayar dosyası açıldı

Bu değerlerden BİRİNİ bir Github Actions sırrına eklememiz gerekiyor. İlk etapta bu değeri nasıl elde ederiz ?! Ne yazık ki, Github Eylemlerinden hiçbiri bana bunu nasıl yapacağımı göstermedi, bu yüzden bir süre -_- etrafta dolaşmak zorunda kaldım.

Neyse ki, bu garip karma değeri oluşturmak için bir komut kullanabiliriz. Bir sonraki adımda bu komut hakkında konuşacağım. Şimdilik, bilinen_ ana makinelere rastgele bir değer eklememiz gerekiyor, böylece Shimataro’nun SSH Anahtarını Yükle bize bir hata vermesin.

adımlar: – ad: SSH Anahtarını Yükle kullanım: shimataro /[email protected]
with: key: $ known_hosts: ‘sadece-bir-yer tutucu-bu yüzden-hatalar-almayız’

5. Adım: Doğru bir bilinen_hosts değeri ekleme

Bir ssh-keyscan komutu ile doğru bilinen_hosts değerini üretebiliriz. Şuna benziyor:

ssh-keyscan -H IP_ADDRESS_OF_HOST

IP_ADDRESS_OF_HOST’u sunucunuzun gerçek ip adresi ile değiştirirseniz, böyle bir sonuç almalısınız. (IP adresimi atladım ama geri kalan her şeyi size göstermeye çalıştım).

eklenen ip adresi sonucu

Bunu öğrendikten sonra, IP adresini (SSH_HOST olarak adlandırdığım) Github Sırlarına manuel olarak ekleyebiliriz.

github sırlarına IP adresi ekle

Daha sonra ssh-keyscan aracılığıyla doğru bilgiyi oluşturabilir ve bilinen_hosts dosyasına ekleyebiliriz.

adımlar: # … – ad: Bilinen Ana Bilgisayarları Ekleme çalıştır: ssh-keyscan -H $ >> ~ / .ssh / bilinen_hosts

Adım 6: Sunucuya Eşitleme Yapın

Sonunda SSH aracılığıyla sunucuya rsync yapabiliriz. Bunu yapmak için SSH kullanıcınızı ve barındırıcınızı bilmeniz gerekir. İşte komutun neye benzediği.

rsync -flags kaynağı [email protected]: hedef bayrakları, eşzamanlamak istediğiniz bayraklardır. Genellikle arşiv, ayrıntılı ve sıkıştır anlamına gelen avz kullanırız. İlk kez senkronizasyon yapıyorsanız, kuru çalıştırma için de n işaretini kullanmanızı tavsiye ederim. kaynak, kopyalamak istediğiniz kaynak dosyadır
[email protected] sunucunuzun kullanıcı adı ve ip adresidir. Bu değerler sır olarak saklanmalıdır. hedef, kopyalamak istediğiniz dosyaların konumudur.

Burada zellwk.com’u sunucuma dağıtmak için kullandığım gerçek bir örnek var.

– isim: rsync çalıştırmasıyla konuşlandırın: rsync -avz ./dist/ [email protected]$: / ev / zellwk / zellwk.com / dist /

Ayrıntılı bayrağa sahip olduğumuz için, rsync aracılığıyla kopyalanan kaynakların bir listesini görebilmelisiniz.

rsync aracılığıyla kopyalanan kaynakların listesi

Bu kadar!

Sarmak

İşte her şeyi özetlemek için gereken adımlar:

Standart RSA biçimini kullanarak bir SSH Anahtar Sözcüğü oluşturun Genel anahtarı yetkili_keys’e ekleyin Özel anahtarı Github sırrı olarak ekleyin Çalıştırıcıda bir SSH Anahtarı oluşturmak için Shimataro’nun SSH Anahtarını Kurma eylemini kullanın. Ssh-keyscan ile doğru bilinen_hosts yapılandırmasını ekleyin SSH aracılığıyla Rysnc ile dağıtın

Bitti! 🙂

Bu makaleyi beğendiyseniz, lütfen bir arkadaşınıza anlatın! Twitter’da paylaşın. Bir yazım hatası tespit ederseniz, GitHub’da düzeltebilirseniz sevinirim. Teşekkür ederim!

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz