Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Menggunakan SSH dan SFTP dengan PHP

PHP Master | Menggunakan SSH dan SFTP dengan PHP

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌asal
2025-02-24 09:37:08388semak imbas

PHP Master | Using SSH and SFTP with PHP

mata teras

    PHP's SSH2 Extension (pembalut untuk LIBSSH2) menyediakan pelbagai fungsi untuk memindahkan fail dengan selamat menggunakan protokol seperti SCP dan SFTP. Pakej SSH2 diperlukan untuk dipasang untuk menggunakan fungsi ini.
  • Pengesahan boleh dicapai menggunakan nama pengguna/kata laluan atau pengesahan utama awam/swasta. Fungsi
  • dan ssh2_auth_password() mengembalikan nilai boolean yang menunjukkan sama ada pengesahan berjaya. ssh2_auth_pubkey_file()
  • Selepas pengesahan yang berjaya, anda boleh menggunakan fungsi SCP untuk melaksanakan operasi pemindahan fail. Fungsi SFTP menyediakan lebih banyak ciri, termasuk menukar keizinan fail atau direktori, mendapatkan maklumat mengenai fail, membuat direktori, menamakan semula projek, dan memadam projek.
  • Artikel ini menyediakan coretan kod untuk membuat kelas tambahan untuk memudahkan pelaksanaan perintah ini, termasuk kelas untuk melaksanakan panggilan SCP dan panggilan SFTP, kelas induk untuk fungsi umum, dan merangkumi kelas pengesahan (kata laluan) dan kunci).
Di dunia hari ini, integrasi pihak ketiga dan perkongsian kandungan sangat biasa, jadi penting untuk memahami dan menggunakan protokol seperti SCP dan SFTP. Pelanjutan SSH2 PHP (pembalut untuk LIBSSH2, melaksanakan protokol SSH2) menyediakan pelbagai fungsi yang boleh digunakan untuk memindahkan fail dengan selamat. Untuk memulakan fungsi ini, anda pasti perlu memasang pakej SSH2. Oleh kerana ia adalah lanjutan PECL, proses pemasangan bergantung kepada sistem operasi yang anda pilih. Sila ikuti panduan pada php.net.

Buat sambungan

mari kita mulakan dengan menyambung ke perkhidmatan SSH. Sangat mudah untuk mewujudkan sambungan:

<code class="language-php"><?php
$conn = ssh2_connect('example.com', 22);
ssh2_auth_password($conn, 'username', 'password');
?></code>
Sesetengah pentadbir lebih suka menggunakan kunci awam dan swasta untuk mengesahkan log masuk. Jika perkhidmatan dikonfigurasikan dan anda ingin menyambung dengan cara ini, anda harus menggunakan kaedah berikut sebaliknya:

<code class="language-php"><?php
$conn = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file(
    $conn,
    'username',
    '/home/username/.ssh/id_rsa.pub',
    '/home/username/.ssh/id_rsa'
);
?></code>
sama ada anda menggunakan nama pengguna/kata laluan atau pengesahan utama awam/swasta,

dan ssh2_auth_password() mengembalikan nilai boolean yang menunjukkan sama ada pengesahan berjaya. ssh2_auth_pubkey_file()

Jalankan arahan asas

Selepas berjaya mengesahkan identiti pelayan, anda boleh melakukan operasi pemindahan fail. Fungsi SCP membolehkan anda menghantar atau menerima fail seperti ini:

<code class="language-php"><?php
// 发送文件
ssh2_scp_send($conn, '/local/filename', '/remote/filename', 0644);

// 获取文件
ssh2_scp_recv($conn, '/remote/filename', '/local/filename');
?></code>

Terdapat juga parameter tambahan yang anda boleh menentukan kebenaran fail apabila menyalin fail ke pelayan jauh. Fungsi SFTP menyediakan lebih banyak fungsi; Mereka bekerja sama dengan fungsi SCP di atas, tetapi sebelum menggunakan fungsi ini, sambungan tambahan mesti dibuat melalui ssh2_scp_send(): ssh2_sftp()

<code class="language-php"><?php
$sftp = ssh2_sftp($conn);

// 创建一个新文件夹
ssh2_sftp_mkdir($sftp, '/home/username/newdir');

// 重命名文件夹
ssh2_sftp_rename($sftp, '/home/username/newdir', '/home/username/newnamedir');

// 删除新文件夹
ssh2_sftp_rmdir($sftp, '/home/username/newnamedir');

// 创建符号链接
ssh2_sftp_symlink($sftp, '/home/username/myfile', '/var/www/myfile');

// 删除文件
ssh2_sftp_unlink($sftp, '/home/username/myfile');
?></code>

menerima sumber sambungan dan mengembalikan sumber SFTP untuk panggilan masa depan ssh2_sftp(). Panggilan ini kemudian mengembalikan nilai boolean, yang membolehkan anda menentukan sama ada operasi itu berjaya. ssh2_sftp_*

menggunakan fungsi pembalut

Apabila tiada fungsi pengurusan fail tertentu di SFTP atau SCP, biasanya anda boleh menggunakan pembalut aliran untuk menggunakan fungsi sistem fail teras. Berikut adalah beberapa contoh:

<code class="language-php"><?php
$conn = ssh2_connect('example.com', 22);
ssh2_auth_password($conn, 'username', 'password');
?></code>

Sebelum melakukan mana -mana panggilan ini, anda mesti menyambung ke pelayan SSH dan SFTP kerana ia menggunakan pembolehubah $sftp yang telah dibuat sebelumnya.

Mengintegrasikan semua Kandungan

Sekarang anda boleh menyambung, mengesahkan identiti, dan menjalankan arahan pada pelayan SSH, kami boleh membuat beberapa kelas tambahan untuk memudahkan pelaksanaan perintah ini: kelas untuk melaksanakan panggilan SCP dan kelas untuk panggilan SFTP, kelas untuk Melaksanakan panggilan SSH, kelas induk untuk fungsi umum dan beberapa kelas untuk merangkumi maklumat pengesahan (kata laluan dan kunci). Mari kita buat pertama kali membuat kelas pengesahan, kerana ia akan digunakan oleh kelas lain.

(kod kelas PHP berganda yang disediakan dalam artikel itu ditinggalkan di sini kerana artikel itu terlalu panjang, tetapi logik terasnya telah ditunjukkan dalam keterangan di atas)

Ringkasan

Apabila sambungan SSH2 PHP dipasang, ia membolehkan skrip anda menyambung ke pelayan SSH2. Anda boleh mengambil kesempatan daripada kelas mudah yang memudahkan kod yang melaksanakan panggilan SFTP atau SCP, atau jika perpustakaan tidak menyediakan fungsi tertentu, anda boleh menggunakan kebanyakan operasi sistem fail teras dengan memanfaatkan fungsi pembungkus SSH2.

(bahagian FAQ yang disediakan dalam artikel itu ditinggalkan di sini kerana artikel itu terlalu panjang, tetapi logik terasnya telah ditunjukkan dalam keterangan di atas)

Atas ialah kandungan terperinci PHP Master | Menggunakan SSH dan SFTP dengan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn