SCP Linux Command – Linux'ta Dosyaları Güvenli Bir Şekilde Aktarın


Linux yöneticileri komut satırı ortamına aşina olmalıdır. Linux sunucularında GUI (Grafik Kullanıcı Arayüzü) modunun kurulumu yaygın olmadığından.

SSH, Linux yöneticilerinin sunucuları uzaktan güvenli bir şekilde yönetmesine olanak tanıyan en popüler protokol olabilir. SSH komutunun içinde yerleşik olarak, dosyaları sunucular arasında güvenli bir şekilde kopyalamak için kullanılan SCP komutu bulunur.

SCP Komutunun Temel Söz Dizimi

Aşağıdaki komut, "kullanıcı adı'nı kullanarak "kaynak_dosya_adı"nı "destination_host" adresindeki "destination_folder" içine kopyalayarak okuyacaktır. " hesap.

scp source_file_name username@destination_host:destination_folder

SCP komutunda kullanabileceğiniz birçok parametre vardır. Günlük kullanımda kullanılabilecek parametreler şunlardır.

Linux'ta Dosyaları Güvenli Bir Şekilde Aktarın

Parametresiz temel SCP komutu, dosyaları arka planda kopyalayacaktır. İşlem tamamlanmadıkça veya bir hata görünmedikçe kullanıcılar hiçbir şey görmez.

Hata ayıklama bilgilerini ekrana yazdırmak için “-v” parametresini kullanabilirsiniz. Bağlantı, kimlik doğrulama ve yapılandırma sorunlarında hata ayıklamanıza yardımcı olabilir.

Dosyayı Yerel Ana Bilgisayardan Uzak Sunucuya Kopyalayın

Aşağıdaki komut, “scp-cheatsheet.pdf” dosyasını yerelden /home/tecmint dizini altındaki uzak Linux sistemine kopyalar.

scp -v scp-cheatsheet.pdf [email :/home/tecmint/.

Örnek Çıktı:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/.
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_xmss type -1
...

Dosyayı Uzak Ana Bilgisayardan Yerel Ana Bilgisayara Kopyalayın

Aşağıdaki komut, “ssh-cheatsheet.pdf” dosyasını uzak bir ana bilgisayardan /home/tecmint dizini altındaki yerel sisteme kopyalar.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.

Örnek Çıktı:

Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf
OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22.
debug1: Connection established.
debug1: identity file /home/tecmint/.ssh/id_rsa type -1
debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_dsa type -1
debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1
debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1
...

Dosyayı Uzak Ana Bilgisayardan Başka Bir Ana Bilgisayara Kopyalayın

Aşağıdaki komut, “ssh-cheatsheet.pdf” dosyasını uzak bir ana bilgisayardan /home/tecmint dizini altındaki başka bir uzak ana bilgisayar sistemine kopyalar.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf [email :/home/anusha/.

Dosyaları Orijinal Oluşturulma Tarihi ve Saatiyle Kopyalayın

-p” parametresi, dosyaları kopyalarken dosyaların orijinal değişiklik ve erişim sürelerini koruyacak, tahmini süre ve bağlantı hızı ekranda görünecektir.

scp -p scp-cheatsheet.pdf [email :/home/tecmint/.

Örnek Çıktı:

[email 's password: 
scp-cheatsheet.pdf                                                                                                                                                                 100%  531   721.4KB/s   00:00    

Dosyaları Kopyalarken Scp Sıkıştırması

Dosya aktarımınızı hızlandırabilecek parametrelerden biri de hareket halindeyken dosyalarınızı sıkıştırmak için kullanılan “-C” parametresidir. Benzersiz olan şey, sıkıştırmanın yalnızca ağda gerçekleşmesidir. Dosya hedef sunucuya ulaştığında, sıkıştırma gerçekleşmeden önceki orijinal boyutuna geri dönecektir.

Bu komutlara bir göz atın. 93 Mb boyutunda tek bir dosya kullanıyor.

scp -pv messages.log [email :.

Örnek Çıktı:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t.
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0

Dosyaların “-C” parametresi olmadan kopyalanması 1661,3 saniye ile sonuçlanacaktır. Sonucu “-C" parametresini kullanarak aşağıdaki komutla karşılaştırabilirsiniz.

scp -Cpv messages.log [email :.

Örnek Çıktı:

Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t.
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email 's password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

Gördüğünüz gibi sıkıştırma kullandığınızda aktarım işlemi 162,5 saniyede gerçekleşiyor. “-C” parametresini kullanmamaktan 10 kat daha hızlıdır. Ağ üzerinden çok fazla dosya kopyalıyorsanız “-C” parametresi ihtiyacınız olan toplam süreyi azaltmanıza yardımcı olacaktır.

Dikkat etmemiz gereken şey, sıkıştırma yönteminin hiçbir dosya üzerinde çalışmamasıdır. Kaynak dosya zaten sıkıştırılmışsa orada herhangi bir gelişme bulamazsınız. .zip, .rar, pictures ve .iso dosyaları gibi dosyalar “ -C” parametresi.

SCP Şifresini Dosyaları Şifreleyecek Şekilde Değiştirin

Varsayılan olarak SCP, dosyaları şifrelemek için “AES-128” kullanır. Şifrelemek için başka bir şifreye geçmek isterseniz “-c” parametresini kullanabilirsiniz.

Bu komuta bir göz atın.

scp -c 3des Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Yukarıdaki komut SCP'ye dosyayı şifrelemek için 3des algoritmasını kullanmasını söyler. Lütfen bu parametrenin “-C” yerine “-c” kullandığına dikkat edin.

SCP Komutu ile Bant Genişliği Kullanımını Sınırlama

İşinize yarayabilecek bir diğer parametre ise “-l” parametresidir. “-l” parametresi kullanılacak bant genişliğini sınırlayacaktır. Çok sayıda dosyayı kopyalamak için bir otomasyon komut dosyası oluşturursanız yararlı olacaktır ancak bant genişliğinin SCP işlemi tarafından tüketilmesini istemezsiniz.

scp -l 400 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

-l” parametresinin arkasındaki 400 değeri, SCP işlemi için bant genişliğini yalnızca 50 KB/ ile sınırladığımız anlamına gelir saniye.

Unutulmaması gereken bir nokta, bant genişliğinin Kilobit/sn (kbps) cinsinden belirtildiğidir. Bu, 8 bitin 1 bayta eşit olduğu anlamına gelir.

SCP ise Kilobayt/saniye (KB/s) cinsinden sayılır. Dolayısıyla, bant genişliğinizi SCP maksimum yalnızca 50 KB/s ile sınırlamak istiyorsanız bunu 50 olarak ayarlamanız gerekir. x 8=400.

Farklı Bağlantı Noktasına Sahip SCP

Genellikle SCP, varsayılan bağlantı noktası olarak 22 bağlantı noktasını kullanır, ancak güvenlik nedeniyle bağlantı noktasını başka bir bağlantı noktasıyla değiştirebilirsiniz. Örneğin 2249 bağlantı noktasını kullanıyoruz.

O halde komut şu şekilde olmalıdır.

scp -P 2249 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Korunan zamanlar ve modlar için zaten “p” kullanıldığından, “p” değil, büyük “P” kullandığından emin olun.

SCP – Dosyaları ve Dizinleri Yinelemeli Olarak Kopyala

Bazen dizini ve içindeki tüm dosyaları/dizinleri kopyalamamız gerekir. Tüm dizini yinelemeli olarak kopyalayan “-r” parametresini kullanarak bunu tek bir komutla yapabilirsek daha iyi olacaktır.

scp -r documents [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Kopyalama işlemi tamamlandığında hedef sunucuda tüm dosyalarının bulunduğu “belgeler” adında bir dizin bulacaksınız. "Belgeler" klasörü otomatik olarak oluşturulur.

SCP – İlerleme Mesajlarını Devre Dışı Bırak

SCP'den gelen ilerleme ölçeri ve uyarı/tanılama mesajlarını görmemeyi tercih ederseniz “-q” parametresini kullanarak devre dışı bırakabilirsiniz. İşte bir örnek.

scp -q Label.pdf [email :.

[email 's password:
pungki@mint ~/Documents $

Gördüğünüz gibi şifreyi girdikten sonra SCP işlemine dair herhangi bir bilgi bulunmuyor. İşlem tamamlandıktan sonra tekrar bir uyarı göreceksiniz.

SCP – Proxy Kullanarak Dosyaları Kopyala

Proxy sunucusu genellikle ofis ortamında kullanılır. Doğal olarak, SCP yapılandırılmış bir proxy değildir. Ortamınız bir proxy kullandığında, SCP'ye proxy ile iletişim kurmasını "söylemeniz" gerekir.

İşte senaryo. Proxy adresi 10.0.96.6 ve proxy bağlantı noktası 8080'dir. Proxy ayrıca kullanıcı kimlik doğrulamasını da uyguladı. Öncelikle “~/.ssh/config” dosyasını oluşturmanız gerekir. İkincisi, bu komutu içine koyarsınız.

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Daha sonra aşağıdakileri içeren “~/.ssh/proxyauth” dosyasını oluşturmanız gerekir.

myusername:mypassword

Bundan sonra SCP'yi her zamanki gibi şeffaf bir şekilde yapabilirsiniz.

Lütfen tirbuşonun henüz sisteminize kurulmamış olabileceğini unutmayın. Linux Mint cihazımda, önce standart Linux Mint kurulum prosedürünü kullanarak onu yüklemem gerekiyor.

apt-get install corkscrew

Diğer yum tabanlı sistemler için kullanıcılar aşağıdaki yum komutunu kullanarak tirbuşonu kurabilirler.

yum install corkscrew

Başka bir husus da, "~/.ssh/proxyauth" dosyası "kullanıcı adınızı" ve "şifrenizi" açık metin biçiminde içerdiğinden , lütfen dosyaya yalnızca sizin erişebildiğinizden emin olun.

Farklı bir ssh_config Dosyası Seçin

Şirket ağları ile genel ağlar arasında sık sık geçiş yapan mobil kullanıcılar için SCP'deki ayarları her zaman değiştirmek zahmetli olacaktır. İhtiyaçlarımıza uyacak farklı bir ssh_config dosyası koyabilirsek daha iyi olur.

Proxy şirket ağında kullanılır ancak genel ağda kullanılmaz ve düzenli olarak ağ değiştirirsiniz.

scp -F /home/pungki/proxy_ssh_config Label.pdf

[email :.
[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Varsayılan olarak kullanıcı başına "ssh_config" dosyası "~/.ssh/config" içine yerleştirilecektir. Proxy uyumluluğuna sahip belirli bir "ssh_config" dosyası oluşturmak, ağlar arasında geçiş yapmayı kolaylaştıracaktır.

Şirket ağına bağlandığınızda “-F” parametresini kullanabilirsiniz. Herkese açık bir ağda olduğunuzda “-F” parametresini atlayabilirsiniz.

Bunların hepsi SCP ile ilgili. Daha ayrıntılı bilgi için SCP'nin man sayfalarını görebilirsiniz. Lütfen yorum ve önerilerinizi bırakmaktan çekinmeyin.