Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Menggunakan SSH dan SFTP dengan PHP
mata teras
ssh2_auth_password()
mengembalikan nilai boolean yang menunjukkan sama ada pengesahan berjaya. ssh2_auth_pubkey_file()
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!