Hiç bir bilgisayar ağı üzerinden dosya aktarırken güvenlik sorunlarıyla karşılaştın mı? Dosyalarını ağa bırakıp güvende kalmasını ummak, Kırmızı Başlıklı Kız gibi ormanı masum sanmak kadar naif olur. Güvenlik önlemleri şart. Verilerini yetkisiz erişime, ağ trafiği dinlemesine, veri ihlallerine ve diğer tehditlere karşı koruyan bir dosya aktarım protokolü kullanman gerekiyor.
Secure Copy Protocol (SCP), bir ağdaki farklı makineler arasında dosya aktaran güçlü bir ağ protokolüdür. Bu yazıda SCP'yi daha yakından tanıyacak ve uzak makineden yerel makineye dosya aktarımında nasıl kullanılacağını inceleyeceğiz.
SCP Nasıl Çalışır?
SCP, dosyalarınızı aktarmak için SSH (Secure Shell) kullanır. Peki bu ne anlama gelir? SSH, sunuculara güvenli uzak erişim sağlayan bir ağ protokolüdür. İletilen verilerin kimlik doğrulamasını, şifrelenmesini ve bütünlüğünün doğrulanmasını sağlayan yöntemler içerir. SCP, dosyaları ağ üzerinden güvenli şekilde aktarmak için SSH'nin sunduğu bu güvenlik özelliklerinden ve şifreleme yöntemlerinden yararlanır. Bu sayede, SCP'yi uzak sunucudan yerel makineye güvenli bağlantı ve dosya transferi için kullanabilir; verilerinizin gizliliğinden ve özgünlüğünden emin olabilirsiniz.
Dosya Aktarımında SCP: Neden ve Nasıl Kullanılır?
SCP'yi uzaktan yerel makineye ya da yerel makineden uzağa kullanmak, dosya aktarımı için verimli ve esnek bir yöntemdir. SCP, dosya transferi açısından önemli avantajlar sunar. Örneğin, FTP gibi diğer aktarım yöntemlerine kıyasla daha güçlü güvenlik önlemleri sağlar. SCP'yi diğer protokollerden ayıran bir diğer nokta ise hızdır. SCP genellikle SFTP gibi protokollerden çok daha hızlıdır ve Linux makineler arasında dosya transferi için oldukça işlevsel bir araçtır.
SCP ile dosyaları şu yönlerde taşıyabilirsiniz:
- Yerel makineden uzak makineye
- Uzak makineden yerel makineye
- Uzak bir makineden başka bir uzak makineye.
Şimdi, Linux SCP sözdizimini dosya transferinde fiilen kullanmaya geçelim. Yapmanız gereken ilk şey, her iki bilgisayarda da SSH'yi kurmaktır. Ancak şunu belirtmek gerekir: SSH, genellikle tüm Linux makinelere önceden yüklü gelir. Sizin durumunuz da buysa bu adımları atlayabilirsiniz.
1. SSH Kurulumu
SSH'yi kurmak için şu komutu çalıştırın:
sudo apt install openssh-client
2. SSH anahtarları oluşturma
Ardından istemci cihazın bir SSH bağlantısı kurması gerekir. İstemci ile sunucu arasında güvenli bir bağlantı oluşturmak için bir özel anahtar ve bir genel anahtar gerekir. Aşağıdaki komut sizin için bir SSH anahtar çifti oluşturur:
ssh-keygen
Bu komutu çalıştırırken büyük ihtimalle anahtar çiftine bir ad ve bir parola (isteğe bağlı) girmeniz istenecektir. Anahtar çifti oluşturulduktan sonra genel anahtarı sunucu makineye kopyalamanız gerekir.
Şimdi SCP komutunun genel yapısına bakalım:
scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
- [seçenekler] > Bu ilk köşeli parantez, SCP komutunun farklı seçenekleriyle değiştirilebilir. Bu seçeneklere ilerleyen bölümlerde değineceğiz.
- [kaynak kullanıcıadı@IP] > Bu köşeli parantez, yerel makinenin kullanıcı adı ve IP adresiyle değiştirilmelidir. Örneğin: [email protected]
- [dizin/dosya adı] > Bu köşeli parantez, göndermek istediğiniz dosyanın konumuyla değiştirilmelidir.
- [hedef kullanıcıadı@IP] > Bu köşeli parantez, alıcı makinenin kullanıcı adı ve IP adresiyle değiştirilmelidir.
- [dizin] > Bu kısmı, dosyanın uzak makinedeki hedef konumuyla değiştirin.
Genel komutun nasıl göründüğünü artık biliyorsunuz. SCP komutunun kullanışlı seçeneklerine bakalım:
| Seçenek | Kullanım Durumu |
| -C |
Bu seçenek, SCP'nin dosyalarınızı aktarım sırasında sıkıştırmasını sağlar.
|
| -c <cipher> |
Bu seçenekle SCP'ye belirli bir şifreleme algoritması kullanmasını söyleyebilirsiniz. Örneğin: scp -c <aes128-ctr>.
|
| -v |
Bu seçenek, işlemin adım adım akışını görmenizi sağlar.
|
| -l <limit in kilobytes> |
Bu seçenekle maksimum bant genişliği sınırı belirleyebilirsiniz. Örneğin aşağıdaki komut, bant genişliği kullanımını saniyede 100 kb olarak ayarlar: scp -l 100
|
| -P |
Bu seçenekle bağlanmak istediğiniz uzak sunucunun SSH portunu değiştirebilirsiniz. SCP varsayılan olarak 22. portu kullanır.
|
| -S <program adı> |
Bu seçenekle bağlantı için kullanılacak programı seçebilirsiniz.
|
| -r |
Bir dosyayı veya dizini tümüyle yinelemeli olarak kopyalar.
|
SCP ile Dosya Aktarımı
SCP ile üç tür aktarım yapılabildiğini hatırlıyorsunuzdur. Şimdi her birini ayrı ayrı inceleyeceğiz. Önce senaryoyu belirleyelim: Linux bilgisayarımın masaüstünde bir kedi fotoğrafı var. İlk adımda bu fotoğrafı bir Linux uzak sunucusuna aktaracağım. Ardından yerel bilgisayarıma geri aktaracağım. Son olarak da şanslı kedimiz iki uzak makine arasında yolculuk yapacak.

Yerel'den Uzağa SCP
Aşağıdaki komut, dosyamızı yerel bilgisayardan uzak sunucuya aktarır:
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
scp komutunu parola ile kullanmak için uzak sunucunuzun parolasını girmeniz gerekir. Bu kadar.

Uzaktan Yerele SCP
Bu işlemi tersine çevirmek için uzak sunucunuzun terminaline erişmenize gerek yok. Yerel bilgisayarınızın terminalinde şu komutu çalıştırın:
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
Gördüğünüz gibi komutun yalnızca iki bölümünü yer değiştirdik.

İki Uzak Makine Arasında SCP
Şimdi kediyi iki uzak makine arasında taşıyalım. Bu adım her iki uzak makine için de parola gerektiriyor, bu yüzden parolaların hazır olduğundan emin olun. İki uzak bilgisayar arasında dosya aktarmak için şu komutu kullanın:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

Diğer Yaygın SCP Komutları
En yaygın SCP komutları şunlardır: uzaktan yerele, yerelden uzağa ve iki uzak sunucu arasında aktarım. Ama burada kalmayalım; başka kullanışlı Linux scp örneklerini de inceleyelim.
1. Tüm Bir Dizini Yinelemeli Olarak Kopyalama
İçindeki tüm dosyalarla birlikte bir dizinin tamamını aktarmak istediğinizi düşünün. Dosyaları tek tek taşımak çok zaman alır. Bunun yerine, bir dizini yinelemeli olarak kopyalamak için şu komutu kullanabilirsiniz:
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
Bu, pek çok senaryoda işe yarar:
- Kod Dağıtımı: kod veya web uygulaması dağıtırken, dosyalar ve betikler gibi tüm bileşenleriyle birlikte dizinin tamamını aktarmanız gerekebilir.
- Yedekleme ve Senkronizasyon: Tüm bir dizinin yedeğini almak veya yerel makine ile uzak sunucu arasındaki iki dizini senkronize etmek istiyorsanız, her şeyi özyinelemeli olarak kopyalamanız gerekir.
- Sistem Taşıması: Sistem geçişlerinde kritik adımlardan biri, tüm önemli verileri eksiksiz taşımaktır. SCP komutunu -r seçeneğiyle kullanmak, taşıma sürecinde hiçbir şeyi atlamadığınızı garanti eder.
2. Bant Genişliği Kullanımını Sınırlama
Veri aktarım hızını kontrol etmek istiyorsanız aşağıdaki komutu kullanabilirsiniz:
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Peki bunu neden yapmak isteyesiniz ki?
Bu iki senaryoda, bant genişliğine sınır koymak için Linux scp sözdizimini kullanabilirsiniz:
- Ağ Yoğunluğu: Ağınız yoğun trafik altındaysa, SCP ile bant genişliğini sınırlamak ağ kaynaklarının daha dengeli dağıtılmasına yardımcı olur. Bu sayede diğer ağ işlemleri sorunsuz çalışmaya devam eder. Paylaşımlı bir ağ üzerinden dosya aktarırken bu özellikle önemlidir; aksi takdirde aktarım süreciniz diğer kullanıcıların ağ etkinliklerini olumsuz etkileyebilir.
- Arka Plan Aktarımları: Otomatik yedekleme veya senkronizasyon gibi arka planda çalışan SCP aktarımları, ağ kaynaklarını tüketebilir. Bu durumda, kaynakları daha verimli yönetmek için söz konusu aktarım işlemlerinin bant genişliğini sınırlayabilirsiniz.
3. Ayrıntılı Günlük Alma
SCP ile -v seçeneği kullanmak, aktarım süreci hakkında ayrıntılı bir günlük kaydı sunar. Aşağıdaki komutu çalıştırarak detaylı geri bildirim alabilirsiniz:
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Bu komutu neden aklınızda tutmanız gerektiğine bakalım:
- Sorun Giderme: Bu seçenek, aktarımın anlık ilerleme durumunu gösterir: dosya boyutu, tamamlanma yüzdesi ve varsa hata mesajları ile uyarılar gibi bilgilere ulaşabilirsiniz. Bu verileri bir arada değerlendirerek aktarım sürecini gerektiğinde izleyebilir ve sorunları giderebilirsiniz.
4. SSH Portu Belirtme
Linux scp sözdizimini -P seçeneğiyle kullanmak, SSH portunu değiştirmenizeolanak tanır. Bunu yapmanızı sağlayan komut şöyledir:
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Bu şu durumlarda işe yarar:
- Güvenlik Duvarı Yapılandırması: Varsayılan SSH portu kısıtlanmışsa veya SSH servisini olası tehditlere karşı gizlemek istiyorsanız, SSH portunu değiştirebilirsiniz.
SCP'ye Alternatifler Var mı?
SCP hızlı ve güvenlidir; doğru Linux scp sözdizimini ve temel sorun giderme bilgisini öğrendikten sonra, ihtiyacınız olan tek araç bu olabilir. Yine de alternatiflerine göz atmakta bir sakınca yok.
1. rsync
rsync, gelişmiş senkronizasyon özellikleri, artımlı aktarım ve hem yerel hem uzak kopyalama desteğiyle çok yönlü bir dosya aktarım aracıdır. Kaynak ile hedef dosyalar arasındaki yalnızca değişen kısımları aktararak bant genişliği kullanımını önemli ölçüde azaltır. Ayrıca kesintiye uğrayan aktarımları kaldığı yerden sürdürebilmesi de büyük bir avantajdır.
rsync Avantajları
- Dosya ve dizinleri verimli şekilde senkronize eder.
- Delta aktarım algoritmasını destekler, böylece veri transferini en aza indirir.
- Kesintiye uğrayan aktarımları kaldığı yerden sürdürebilir.
rsync Dezavantajları
- Hem kaynak hem hedef sistemde rsync kurulu olması gerekir.
- scp'ye kıyasla daha fazla kurulum ve komut seçeneği gerektirir.
2. SFTP (SSH Dosya Transfer Protokolü)
SFTP, dosyaları SSH üzerinden güvenli bir şekilde aktarmanın bir yolunu sunar. FTP ile benzer işlevsellik sağlar; ancak SCP gibi şifreli bir SSH bağlantısı üzerinden çalışır. Bununla birlikte, bazı konularda SFTP, SCP'nin bir adım önündedir. SCP dizin listeleri oluşturamaz, dizin ekleyemez veya silemez. SFTP ise tüm bu işlemleri gerçekleştirebilir.
SFTP Avantajları
- Şifreleme ile güvenli dosya aktarımı.
- Uzaktan dosya yönetimi desteği.
- Çoğu Linux ve Unix sisteminde yaygın olarak kullanılabilir.
SFTP Dezavantajları
- Komut sözdizimi ve kullanımı, geleneksel FTP'den farklıdır.
- Bazı gömülü sistemlerde veya cihazlarda sınırlı destek sunulabilir.
3. FTP (Dosya Transfer Protokolü)
FTP, dosya aktarımı için yaygın kullanılan standart bir protokoldür. İstemci-sunucu modeliyle çalışır ve temel dosya aktarım işlevselliği sunar.
FTP Avantajları
- Farklı platformlarda geniş destek.
- Tanıdık komut satırı ve grafiksel istemciler mevcuttur.
FTP Dezavantajları
- Şifreleme içermez; scp ve sftp ile karşılaştırıldığında daha az güvenlidir.
- Bağlantı kurmak için ek güvenlik duvarı yapılandırması gerekebilir.
- Düz metin kimlik doğrulama.
Sonuç olarak, scp güvenli dosya aktarımı için SSH üzerinde basit ve güvenilir bir seçenek olsa da rsync, sftp ve FTP gibi alternatifler, belirli gereksinimlere bağlı olarak ek özellikler ve esneklik sunabilir.
Hangisini seçeceğinize nasıl karar verirsiniz? Güvenlik, senkronizasyon ihtiyaçları, kullanım kolaylığı ve sistemlerinizle protokollerinizin uyumluluğu gibi faktörleri göz önünde bulundurmalısınız. Örneğin, dosya aktarımında güvenlik ve veri gizliliği sizin için öncelikli faktörse FTP uygun bir seçenek değildir.
Sonuç
SCP, bilgisayarlar arasında dosya aktarımı için hızlı ve güvenli bir araçtır. scp ile uzaktan yerel makineye, yerel makineden uzak sunucuya ve hatta iki uzak sistem arasında dosya aktarabilirsiniz. rsync gibi yeterli düzeyde çalışan alternatifleri olsa da SCP, özellikle güvenlik ve hız açısından onların önüne geçer. Bu blog yazısında SCP'yi, kullanım senaryolarını ve alternatiflerini ele aldık; sık kullanılan sözdizimlerine hızlı erişim için bir başvuru sayfası da ekledik.
SSS
SCP'yi Uzaktan Yerel Makineye Kullanırken Dikkat Etmem Gereken Güvenlik Riskleri Var mı?
SCP oldukça güvenli bir araçtır; kullanırken güvenlik tehditleri konusunda endişelenmenize gerek yoktur. Yine de alabileceğiniz her türlü ek güvenlik önlemini almanız her zaman önerilir.
SCP ile Uzaktan Yerel Makineye Dosya Aktarırken Karşılaşılan Yaygın Hatalar Nelerdir?
Uzak bir sunucudan yerel makineye dosya aktarmak için SCP kullanırken çeşitli hatalarla karşılaşılabilir. SCP uzaktan yerele aktarımda en sık karşılaşılan iki hata şunlardır:
- Böyle bir dosya veya dizin yok: Bu hata, port numarasının yanlış belirtilmesi, dosya izin ayarlarının hatalı olması veya giriş bilgilerinin yanlış olması durumunda ortaya çıkar.
- Host Key Verification Failed: Bu hata mesajı, sunucu güncellemeleri nedeniyle host anahtarı değiştiğinde görülür. Host anahtarı, o sunucuya daha önce bağlandığınızı gösterir; doğrulama başarısız olduğunda sunucunun kimliğinin değiştiği anlamına gelir. Bu hata, sizi sahte bir sunucuya bağlanmaktan korumaya çalışır.
Uzak Sistemler Arasında Dosya Aktarmak için SCP Nasıl Kullanılır?
SCP ile sistemler arasında dosya aktarımı yapabilmek için her iki bilgisayarın da SSH üzerinden erişilebilir olması gerekir. Ayrıca uzak makinelerin IP adresine ve şifresine ihtiyacınız vardır. Gerisi doğru SCP komutunu kullanmaktan ibarettir:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]
Bu komutu yazdıktan sonra sunuculara ait şifreyi girmeniz istenecektir. Şifreyi girdikten sonra dosyanız aktarılır.