ホームページ > バックエンド開発 > PHPチュートリアル > PHPマスター| PHPでSSHとSFTPを使用します

PHPマスター| PHPでSSHとSFTPを使用します

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-24 09:37:08
オリジナル
385 人が閲覧しました

PHP Master | Using SSH and SFTP with PHP

コアポイント

  • PHPのSSH2拡張(LIBSSH2のラッパー)は、SCPやSFTPなどのプロトコルを使用してファイルを安全に転送するための複数の関数を提供します。これらの機能を使用するには、SSH2パッケージをインストールする必要があります。
  • 認証は、ユーザー名/パスワードまたはパブリック/プライベートキー認証を使用して達成できます。関数ssh2_auth_password()およびssh2_auth_pubkey_file()認証が成功したかどうかを示すブール値を返します。
  • 認証が成功した後、SCP関数を使用してファイル転送操作を実行できます。 SFTP関数は、ファイルまたはディレクトリの権限の変更、ファイルに関する情報の取得、ディレクトリの作成、プロジェクトの改名、プロジェクトの削除など、より多くの機能を提供します。
  • この記事では、SCP呼び出しやSFTP呼び出しを実行するためのクラス、一般的な関数の親クラス、認証情報(パスワード)およびキー)クラスのカプセル化を含む、これらのコマンドの実行を簡素化するための補助クラスを作成するためのコードスニペットを提供します。
今日の世界では、サードパーティの統合とコンテンツの共有が非常に一般的であるため、SCPやSFTPなどのプロトコルを理解して使用することが重要です。 PHPのSSH2拡張(LIBSSH2のラッパー、SSH2プロトコルの実装)は、ファイルを安全に転送するために使用できる複数の関数を提供します。これらの機能を始めるには、明らかにSSH2パッケージをインストールする必要があります。 PECL拡張機能であるため、インストールプロセスは選択したオペレーティングシステムに依存します。 php.netのガイドに従ってください。

接続を作成します

SSHサービスに接続することから始めましょう。接続を確立するのは非常に簡単です:

<?php
$conn = ssh2_connect('example.com', 22);
ssh2_auth_password($conn, 'username', 'password');
?>
ログイン後にコピー
ログイン後にコピー
一部の管理者は、パブリックキーとプライベートキーを使用してログインを確認することを好みます。サービスが構成されていて、この方法で接続する場合は、代わりに次の方法を使用する必要があります。

ユーザー名/パスワードまたはパブリック/プライベートキー認証を使用しているかどうか、
<?php
$conn = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file(
    $conn,
    'username',
    '/home/username/.ssh/id_rsa.pub',
    '/home/username/.ssh/id_rsa'
);
?>
ログイン後にコピー
および

認証が成功しているかどうかを示すブール値を返します。 ssh2_auth_password() ssh2_auth_pubkey_file()

基本的なコマンドを実行

サーバーのIDを正常に確認した後、ファイル転送操作を実行できます。 SCP関数を使用すると、次のようなファイルを送信または受信できます。

リモートサーバーにファイルをコピーするときにファイル権限を指定できる追加のパラメーターもあります。 SFTP関数は、ファイルまたはディレクトリのアクセス許可を変更し、ファイルに関する情報を取得し、プロジェクトの変更、プロジェクトの削除などを提供します。それらは上記のSCP関数と非常に同様に機能しますが、これらの関数を使用する前に、追加の接続を
<?php
// 发送文件
ssh2_scp_send($conn, '/local/filename', '/remote/filename', 0644);

// 获取文件
ssh2_scp_recv($conn, '/remote/filename', '/local/filename');
?>
ログイン後にコピー

を介して行う必要があります。 ssh2_scp_send() ssh2_sftp()

接続リソースを受け入れ、SFTPリソースを将来の
<?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');
?>
ログイン後にコピー
呼び出しに戻します。これらの呼び出しは、ブール値を返し、操作が成功したかどうかを判断できるようにします。

ラッピング関数を使用してssh2_sftp()ssh2_sftp_*

SFTPまたはSCPに特定のファイル管理機能がない場合、通常、ストリームラッパーを使用してコアファイルシステム機能を使用できます。ここにいくつかの例があります:

<?php
$conn = ssh2_connect('example.com', 22);
ssh2_auth_password($conn, 'username', 'password');
?>
ログイン後にコピー
ログイン後にコピー
これらの呼び出しのいずれかを実行する前に、以前に作成された

変数を使用するため、SSHおよびSFTPサーバーに接続する必要があります。 $sftp

すべてのコンテンツを統合します

SSHサーバーで接続、確認、およびコマンドを実行できるようになったので、これらのコマンドの実行を簡素化するための補助クラスを作成できます。SCP呼び出しを実行するクラスとSFTP呼び出しのクラス、クラスのクラスSSHコールの実行、一般的な関数の親クラス、および認証情報をカプセル化するためのいくつかのクラス(パスワードとキー)。他のクラスで使用されるため、最初に認証クラスを作成しましょう。

(記事に記載されている複数のPHPクラスコードは、記事が長すぎるため省略されていますが、そのコアロジックは上記の説明に反映されています)

概要

SSH2 PHP拡張機能がインストールされている場合、スクリプトがSSH2サーバーに接続できるようになります。 SFTPまたはSCP呼び出しを実行するコードを簡素化する便利なクラスを利用することができます。または、ライブラリが特定の機能を提供しない場合は、SSH2ラッパー機能を活用して、ほとんどのコアファイルシステム操作を使用できます。

(記事に記載されているFAQパーツは、記事が長すぎるため省略されていますが、そのコアロジックは上記の説明に反映されています)

以上がPHPマスター| PHPでSSHとSFTPを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート