🔐SSH ve Rsync Kullanımı: .ssh/config Dosyası, Anahtar Oluşturma ve Dosya Aktarı
SSH bağlantıları, anahtar oluşturma, dosya indirme ve rsync kullanarak dosya aktarımı gibi konuları detaylıca anlatan bir kılavuz.
📁 .ssh/config dosyası ne işe yarar
.ssh/config dosyası ne işe yararHost my.host
HostName 123.123.32.231
User username
IdentityFile ".ssh/rsa.pem"
ForwardAgent yes
# Tüm sunucular için ortak ayarlar
Host *
ForwardAgent yes
AddKeysToAgent yes.ssh/configdosyasına sunuculara bağlanmak için gerekli bilgileri kaydederizHostNamesunucunun IP adresiUsersunucudaki kullanıcı adıIdentityFilesunucuya bağlanmak için kullanılacak anahtar dosyaAddKeysToAgenttekrardan bağlantılar için anahtarı saklarForwardAgentlokal agent bilgilerini uzan sunucuya aktarırGit SSH auth varsa eğer lokalde, karşı sunucuya da bu aktarılır
ssh my.hostkomutu ile aslındassh -A [email protected] -i .ssh/rsa.pemkodunu yazmış oluruz
🔑 SSH key oluşturup sunucuya yüklemek
#!/usr/bin/env zsh
ADDRESS="[email protected]"
KEY_ID="raspi"
# SSH key oluşturma
KEY_PATH="$HOME/.ssh/${KEY_ID}_ecdsa" # veya _rsa
ssh-keygen -t ecdsa -b 521 -f ${KEY_PATH}
# SSH keyi sunucuya kopyalama ve yetkilendirme
ssh-copy-id -i $KEY_PATH.pub $ADDRESS
# cat $KEY_PATH.pub | $ADDRESS "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys"
# SSH keyi yerel anahtarlara ekleme (eğer şifre istenirse anahtar eklenmeli)
ssh-add $KEY_PATH
# SSH ile adrese bağlanma
ssh $ADDRESS -A
# Apple keychain üzerine ekleme
# chmod 400 $KEY_PATH
ssh-add --apple-use-keychain $KEY_PATH # Sadece passphrase için çalışırHow can I permanently add my SSH private key to Keychain so it is automatically available to ssh?
⬇️ Sunucu üzerinden hızlıca dosya indirme
REMOTE="[email protected]"
SOURCE="path"
DESTINATION="path"
scp -r $REMOTE:$SOURCE $DESTINATION
rsync -avzrt --progress "$REMOTE:$SOURCE" "$DESTINATION" 🔄 rsync kullanarak dosya aktarımı
rsync kullanarak dosya aktarımı❌ Bazı Dosyaları Hariç Tutma
rsynckullanarak hariç tutulacak dosya desenlerini belirtmek için aşağıdaki örnekleri kullanabilirsiniz:.log: .log uzantılı tüm dosyaları hariç tutar..png: .png uzantılı tüm dosyaları hariç tutar./dirname/: dirname dizinini hariç tutar./dirname/*: dirname dizinindeki tüm dosyaları hariç tutar./dirname/file.txt: dirname dizinindeki file.txt dosyasını hariç tutar.
rsynciçin birden fazla desen belirtebilirsiniz--excludeseçeneği ile, örneğin:Bu
.pycve.loguzantılı tüm dosyaları, ayrıca /tmp/ dizinini hariç tutacaktır.
rsync -av --exclude=*.pyc --exclude=*.log --exclude=/tmp/ . /path/to/destinationAyrıca,
--exclude-fromseçeneğiyle hariç tutulacak dosyaları içeren bir dosya belirtebilirsinizexclude-list.txtdosyasında listelenen desenlerle eşleşen tüm dosyaları hariç tutacaktır.Dosya, her satıra bir
patterniçermelidir
rsync -av --exclude-from=exclude-list.txt . /path/to/destination
💡 Örnek Kullanım
Bu komut
exclude-list.txtdosyasında listelenen dosyaları ve dizinleri hariç tutacaktıraseçeneği arşivleme modunu etkinleştirir, yani dosya meta verilerini (öznitelikleri, izinleri, vb.) korur.vseçeneği etkinleştirilirse, rsync'in ne yaptığını gösterir.zseçeneği etkinleştirilirse, dosyaları sıkıştırır ve yükleme sırasında çıkarır.e sshseçeneği rsync'in SSH ile nasıl bağlantı kuracağını belirtir.E, ile dosya içerisindekiIcongibi bilgiler de aktarılırr, ile alt dizinlerde de ilerlert, dosyanın son değişiklik bilgisini korur
rsync -avz --exclude-from=exclude-list.txt -e ssh /local/path/ user@remote-server:/path/to/destination*.log
/tmp/📚 References
Last updated
Was this helpful?