SSH protokolü, iki yönlü bir akışı aktarabileceğiniz güvenli bir tünel oluşturur ve bu akışı, istediğiniz iki işlemi bağlamak için kullanabilirsiniz.
En bilinen iki işlem bir kabuk (sunucuda) ve etkileşimli bir terminal emülatörü (istemcide) olacaktır. Bir sunucuya ssh yaparken ve uzak kabuğun komut istemine komutları yazarken kullandığınız şey budur.
SCP , yalnızca bu kabuk ve uzak komut kullanılarak yapılan dosya aktarımıdır. SCP'de, istemci sunucuya bağlandıktan ve tüm kimlik doğrulama ve yetkilendirme yapıldıktan sonra, istemci uzak kabuğa scp -f myfile.txt
, myfile.txt dosyasının içeriğini akışa yazan sadece bir komut gönderir (istemci için okumak için) veya scp -t myfile.txt
akıştan okuyan ve dosya.txt dosyasına yazar.
-F ve -t öğelerinin ("dan" ve "dan" e) scp man sayfalarında olmadığını göreceksiniz. İç olarak kabul edilirler. Hafif bir onay şeması ve dosya içeriğini basit başlıklara sararak dizin aktarımı için bir şema vardır. Fakat çoğu zaman SCP, dosyanın baytlarını SSH tüneli üzerine yazarak SSH'nin sıkıştırma ve bütünlük gibi karmaşık şeylerle ilgilenmesine izin vermenin temel bir meselesidir.
SFTP , yine SSH aracılığıyla tünellenmiş olan çok daha karmaşık bir dosya aktarım protokolüdür.
SFTP'de hem istekler hem de yanıtlar, "SSH_FXP_OPEN", "SSH_FXP_STAT", "SSH_FXP_READ", "SSH_FXP_DATA", "SSH_FXP_CLOSE" gibi isimlere sahip ikili kodlu paketlerdir.
Protokolün ilginç bir özelliği, komutların yöneltilebilmesi ve yanıtların herhangi bir sırayla gelebilmesidir. Bu, oturumların yanıtları beklerken daha az zaman harcadığı anlamına gelebilir ve bu fırsatların ne ölçüde kullanıldığını bilmeme rağmen, bir sunucudan eşzamanlı aktarımları çeşitli hızlarda veri kaynakları ile optimize etmek için fırsatlar vardır.
SFTP'nin, SCP'nin ele almadığı birçok şeyi yapma komutları vardır; sil, yeniden adlandır, kes, taşı vb.
Tüm detaylar bir IETF Taslağında mevcuttur .
Daha yeni SSH paketlerinin, kullanıcı scp
ikili kodunu SFTP ikili koduna bir bağlantı ile değiştirmesi dikkat çekicidir . Bu SFTP, scp'nin görünümüne ve havasına sahiptir, ancak kapakların altında SFTP protokolünü kullanıyor.
Alıntılama - O'Reilly SSH: Güvenli Kabuk, Tanımlayıcı Rehber , bölüm 5.7 "Alt Sistemler":
UYARI: Alt sistem-sftp hattını sshd2_config'den kaldırmayın: scp2 ve sftp'nin çalışması gerekir. Dahili olarak, her iki program da dosya aktarımlarını gerçekleştirmek için ssh2-sftp komutunu çalıştırır.
Balık ilginç bir tarih eseridir. Diyelim ki SSH üzerinden dosya aktarmak istiyorsunuz, ancak uzak sisteminizde SCP yok. Belki de SCP'den daha karmaşık dosya işlemleri yapmak istiyorsunuz, ancak uzak sisteminizde SFTP yok. Bugün bu senaryolardan hiçbiri muhtemel değildir, ancak Balık icat edildiğinde, onlardı.
Böylece, Midnight Commander müşterisinin geliştiricileri kendi çözümlerini oluşturmaya karar verdi. Prensip olarak scp'ye benzer, ancak daha fazla komut var. İstemci şuna benzeyen komutlar gönderir:
#RETR /some/name
ls -l /some/name | ( read a b c d x e; echo $x ); echo '### 100'; cat /some/name; echo '### 200'
Bir Fish sunucusuyla konuşuyorsanız, #RETR
komutu yorumlar. Bununla birlikte, uzak sunucuda bir Balık sunucusu kurulu değilse, komutlar kabuk tarafından yorumlanacaktır. İlk önce bir yorum, ardından dosya hakkında bilgi yazan bir komut, ardından bazı işaretçilerle çevrili dosya içeriği.
Etkili bir şekilde, scp veya balık yokluğunda, müşteri scp eşdeğerini "kendi" yuvarlamıştır - ancak aynı şekilde yeniden adlandırmak, taşımak, kesmek, vb. İçin kabuk komutları gönderebilir.
Balıkların detayları burada Midnight Commander kaynağındadır .
Tüm bunlar son kullanıcı bakış açısından ne anlama geliyor?
- daha eski SSH sunucu uygulamaları scp'yi destekler ancak SFTP'yi desteklemez; SFTP istemcisini bunlarla kullanamazsınız.
- Performans, güvenilirlik ve esneklik için SFTP kullanın
- "Scp" müşteriniz kılık değiştirmiş SFTP istemcisi olabilir ( Alıntı gerekli )
- Balık niş durumlarda yararlı olabilir, ancak aksi takdirde daha standart SFTP kullanın.