Dulu saya berpikir SCP adalah alat untuk menyalin file melalui SSH, dan menyalin file melalui SSH disebut SFTP, yang merupakan sinonim dari FISH.
Tapi sekarang ketika saya sedang mencari plugin Total Commander untuk melakukan ini di Windows, saya perhatikan bahwa di halamannya tertulis "Mengizinkan akses ke server jauh melalui FTP aman (FTP via SSH). Memerlukan SSH2. Ini BUKAN sama sebagai SCP! ".
Jika tidak sama maka apa yang saya salah pahami?
ssh
scp
sftp
fish-protocol
Ivan
sumber
sumber
Jawaban:
SFTP bukan protokol FTP lebih dari ssh, tetapi ekstensi untuk protokol SSH termasuk dalam SSH2 (dan beberapa implementasi SSH1). SFTP adalah protokol transfer file yang mirip dengan FTP tetapi menggunakan protokol SSH sebagai protokol jaringan (dan manfaat dari meninggalkan SSH untuk menangani otentikasi dan enkripsi).
SCP hanya untuk mentransfer file, dan tidak dapat melakukan hal-hal lain seperti daftar direktori jarak jauh atau menghapus file, yang dilakukan SFTP.
FISH tampaknya merupakan protokol lain yang dapat menggunakan SSH atau RSH untuk mentransfer file.
sumber
Protokol SSH membuat terowongan aman tempat Anda dapat mentransfer aliran dua arah, dan Anda dapat menggunakan aliran itu untuk menghubungkan dua proses yang Anda sukai.
Dua proses yang paling akrab adalah shell (di server) dan emulator terminal interaktif (di klien). Itu yang Anda gunakan ketika Anda ssh ke server dan ketik perintah di prompt shell jauh.
SCP adalah transfer file yang dilakukan hanya dengan menggunakan shell dan perintah jarak jauh. Dalam SCP, setelah klien terhubung ke server, dan semua otentikasi dan otorisasi telah dilakukan, klien mengirim perintah seperti shell remote
scp -f myfile.txt
, yang hanya menulis isi file myfile.txt ke aliran (untuk klien membaca) atauscp -t myfile.txt
yang membaca dari aliran dan menulis ke myfile.txt.Anda akan melihat bahwa -f dan -t (untuk "dari" dan "ke") tidak ada di halaman manual scp. Mereka dianggap internal. Ada skema pengakuan ringan, dan skema untuk mentransfer direktori dengan membungkus isi file dalam header sederhana. Tetapi untuk sebagian besar SCP adalah masalah dasar menulis byte file ke terowongan SSH, membiarkan SSH menangani hal-hal rumit seperti kompresi dan integritas.
SFTP adalah protokol transfer file yang jauh lebih kompleks, yang lagi-lagi disetel melalui SSH.
Dalam SFTP baik permintaan dan tanggapan adalah paket yang disandikan biner dengan nama-nama seperti "SSH_FXP_OPEN", "SSH_FXP_STAT", "SSH_FXP_READ", "SSH_FXP_DATA", "SSH_FXP_CLOSE".
Salah satu fitur menarik dari protokol adalah bahwa perintah dapat disalurkan, dan respons dapat datang dalam urutan apa pun. Ini dapat berarti bahwa sesi menghabiskan lebih sedikit waktu untuk menunggu tanggapan, dan ada peluang untuk mengoptimalkan transfer bersamaan dari satu server dengan sumber data dari berbagai kecepatan - meskipun saya tidak tahu sejauh mana peluang itu diambil.
SFTP memiliki perintah untuk melakukan banyak hal yang tidak ditangani oleh SCP; seperti delete, rename, truncate, move, dll.
Semua detail tersedia dalam Draft IETF .
Perlu dicatat bahwa paket SSH yang lebih baru menggantikan
scp
biner pengguna dengan symlink ke biner SFTP. SFTP ini memiliki tampilan dan nuansa scp, tetapi di bawah selimut itu menggunakan protokol SFTP.Ikan adalah bagian sejarah yang menarik. Katakanlah Anda ingin mentransfer file melalui SSH, tetapi sistem jarak jauh Anda tidak memiliki SCP. Atau mungkin Anda ingin melakukan operasi file yang lebih canggih daripada SCP, tetapi sistem jarak jauh Anda tidak memiliki SFTP. Tidak satu pun dari skenario itu yang mungkin terjadi saat ini, tetapi ketika Fish ditemukan, mereka melakukannya.
Jadi para pengembang klien Midnight Commander mulai membuat solusi sendiri. Ini mirip dengan scp pada prinsipnya, tetapi ada lebih banyak perintah. Klien mengirim perintah yang terlihat seperti:
Jika Anda berbicara dengan server Fish, maka itu akan menafsirkan
#RETR
perintah. Namun jika server jarak jauh tidak memiliki server Ikan diinstal, perintah akan ditafsirkan oleh shell. Pertama komentar, lalu perintah yang mencetak info tentang file, diikuti oleh isi file yang dikelilingi oleh beberapa penanda.Secara efektif, tanpa adanya scp atau fish, klien telah "menggulung sendiri" yang setara dengan scp - tetapi ia dapat mengirim perintah shell yang sama untuk mengganti nama, memindahkan, memotong, dll.
Rincian Ikan ada di sumber Midnight Commander di sini .
Apa arti semua ini dari perspektif pengguna akhir?
sumber
Sederhananya:
sumber
sftp
danscp
membutuhkan program khusus di sisi server, tidak seperti FISH, yang hanya menggunakan utilitas Unix dasar di shell jauh.scp
untuk scp atau sftp-server). Dan memang ada kasus ketika sisi jarak jauh adalah "Unix" terbatas, di mana Anda tidak dapat menginstal apa yang Anda inginkan: untuk mentransfer file ke Android melalui SSH (melalui WiFi), saya telah menulis serangkaian skrip rpush-cat - mungkin, klien IKAN akan bekerja. (tramp-fish.el
dalam Emacs juga bisa: klien TRAMP reguler tidak bekerja karenastat
tidak ada di Android.)scp
juga diperlukan di sisi server, di samping sisi klien? Dengan pencarian google cepat, saya tidak dapat menemukan apa pun yang mengkonfirmasi yangscp
juga diperlukan di sisi server.FISH dan SFTP serupa, dan seperti yang diamati keduanya bekerja dengan baik pada SSH, SFTP memerlukan dukungan dan konfigurasi khusus di Server SSH untuk memfasilitasi transfer, tetapi sedikit lebih aman dan memungkinkan SysAdmins untuk hanya mengizinkan SFTP (dalam situasi ini IKAN menang dapat bekerja).
IKAN membutuhkan shell (sh / rsh misalnya) untuk menyalin, dan karenanya memerlukan akses SSH penuh ke mesin, saya akan membayangkan akan lebih sulit untuk mengamankan (saya tidak bisa berkomentar secara objektif tentang ini karena saya tidak pernah harus).
Jika memungkinkan, saya akan merekomendasikan SFTP, scp, FISH (dalam urutan itu).
Wikipedia IKAN Artikel
sumber
scp
untuk scp atau sftp-server). Dan memang ada kasus ketika sisi jarak jauh adalah "Unix" terbatas, di mana Anda tidak dapat menginstal apa yang Anda inginkan: untuk mentransfer file ke Android melalui SSH (melalui WiFi), saya telah menulis serangkaian skrip rpush-cat - mungkin, klien IKAN akan bekerja. (tramp-fish.el
di Emacs juga bisa: klien TRAMP reguler tidak bekerja karenastat
tidak ada di Android.)