ホームページ > バックエンド開発 > PHPチュートリアル > php_PHP チュートリアルでの sftp の使用に関するチュートリアル

php_PHP チュートリアルでの sftp の使用に関するチュートリアル

WBOY
リリース: 2016-07-13 09:59:05
オリジナル
981 人が閲覧しました

phpでsftpを使うチュートリアル

この記事では、phpでsftpを使うチュートリアルを中心に、ftpプロトコル、sshプロトコル、sftpプロトコルの導入、FTPとSFTPの操作クラスの実装について説明します。コードは必須です。お友達が参照できます

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

/**

phpでのSFTP使用チュートリアル

Telnet、FTP、SSH、SFTP、SSL

(1) FTPプロトコルの紹介

FTP (ファイル転送プロトコル) は、インターネット上でファイルを転送するために FTP を使用して一般的に使用されているプロトコルの 1 つです。

他の多くの通信プロトコルと同様に、FTP 通信プロトコルもクライアント/サーバー アーキテクチャを採用しています。ユーザーはさまざまな FTP クライアント プログラムを使用できます

FTP サーバーに接続してファイルをアップロードまたはダウンロードするには、FTP プロトコルを使用します。FTP コマンドの送信とデータの送信は、別のポートを介して送信されます。

FTP は、TCP/IP の特定のアプリケーションであり、OSI モデルの第 7 層と、アプリケーション層である TCP モデルの第 4 層で動作します。

このように、FTP クライアントはサーバーとの接続を確立する前によく知られている「3 ウェイ ハンドシェイク」プロセスを通過する必要があります。これがもたらす重要な点は、クライアントとサーバー間の接続が信頼できることです。

接続指向であり、データ送信の信頼できる保証を提供します。

(2)sshプロトコル

ssh の正式名は SecureShell で、送信されるデータをすべて「仲介者」が取得できないように暗号化できます

送信データは圧縮されており、これにより送信速度が向上します。SSH には Telnet に代わる多くの機能があり、ftppop に安全なチャネルも提供します

SSH プロトコル フレームワークの最も重要な部分は 3 つのプロトコルです:

* トランスポート層プロトコルは、サーバー認証、データの機密性、情報の整合性などのサポートを提供します。

* ユーザー認証プロトコルはサーバーにクライアント ID 認証を提供します。

* 接続プロトコルは、上位層のアプリケーション プロトコルで使用できるように、暗号化された情報トンネルを複数の論理チャネルに多重化します。

さまざまな高レベルのアプリケーション プロトコルは、SSH 基本システムから比較的独立しており、この基本フレームワークに依存して、接続プロトコルを通じて SSH セキュリティ メカニズムを使用します。

(3)SFTPプロトコル

SSH プロトコルを使用した FTP 転送のプロトコルは SFTP (Secure File Transfer) と呼ばれ、Sftp と Ftp はどちらもファイル転送プロトコルです。違い: sftp は ssh に含まれるプロトコルです (ssh は暗号化された Telnet プロトコルです)。

sshd サーバーが起動している限り使用できますが、sftp はより安全であり、ftp サーバーを起動する必要はありません。 sftp = ssh + ftp (安全なファイル転送プロトコル)。 FTPは平文で送信されるため、

セキュリティはありませんが、sftpはsshをベースにしており、通信内容は暗号化されているため安全です。現在のネットワークはあまり安全ではありません。これまで Telnet を使用していた人は ssh2 に切り替えています (SSH1 はクラックされています)。 sftpはftpと一緒に使うツールです

方法は同じです。ただし、送信されるファイルはSSLで暗号化されており、たとえ傍受されても解読することはできません。さらに、sftp には、ファイル属性の設定など、ftp よりも多くの機能があります

*/

// これは FTP を紹介するだけであり、検証するものではないことに注意してください。

クラスftp{

//初期設定は NULL です

プライベート $config =NULL ;

// 接続は NULL です

プライベート $conn = NULL;

パブリック関数 init($config){

$this->config = $config;

}

// FTP接続

パブリック関数 connect(){

return $this->conn = ftp_connect($this->config['host'],$this->config['port']));

}

//データの送信トランスポート層プロトコル、データの取得 true または false

パブリック関数ダウンロード($remote, $local,$mode = 'auto'){

return $result = @ftp_get($this->conn, $localpath, $remotepath, $mode);

}

//データの送信トランスポート層プロトコル、データのアップロード true または false

パブリック関数アップロード($remote, $local,$mode = 'auto'){

return $result = @ftp_put($this->conn, $localpath, $remotepath, $mode);

}

//ファイルを削除する

パブリック関数remove($remote){

return $result = @ftp_delete($this->conn_id, $file);

}

}

//

を使用します

$config = 配列(

'ホスト名' => 'ローカルホスト',

'ユーザー名' => 'root',

'パスワード' => 'root',

'ポート' => 21

);

$ftp = 新しい Ftp();

$ftp->connect($config);

$ftp->upload('ftp_err.log','ftp_upload.log');

$ftp->download('ftp_upload.log','ftp_download.log');

/*上記 3 つのプロトコルに基づいて ssh に基づいて ftp クラスを作成します

ID 認証を実行するには、公開キーとパスワードの 2 つの方法があることがわかっています。

(1)パスワードでログイン

(2) パスワードフリーログインとは、公開鍵を使用してログインすることを意味します

*/

クラスSFTP{

//初期設定は NULL です

プライベート $config =NULL ;

// 接続は NULL です

プライベート $conn = NULL;

//ログインに秘密キーを使用するかどうか

private $use_pubkey_file= false;

//初期化

パブリック関数 init($config){

$this->config = $config ;

}

// ssh に接続します。接続方法は 2 つあります (1) パスワードを使用します

// (2) 秘密鍵を使用する

パブリック関数 connect(){

$methods['hostkey'] = $use_pubkey_file : [] ;

$con = ssh2_connect($this->config['host'], $this->config['port'], $methods);

//(​​1)秘密鍵を使用する場合

if($use_pubkey_file){

//ユーザー認証プロトコル

$rc = ssh2_auth_pubkey_file(

$コン、

$this->config['user'],

$this->config['pubkey_file'],

$this->config['privkey_file'],

$this->config['パスフレーズ'])

);

//(​​2) ログインユーザー名とパスワードを使用します

}その他{

$rc = ssh2_auth_password( $conn, $this->conf_['user'],$this->conf_['passwd']);

}

$rc を返します ;

}

//データの送信 トランスポート層プロトコル、データの取得

パブリック関数ダウンロード($remote, $local){

return ssh2_scp_recv($this->conn_, $remote, $local);

}

//データトランスポート層プロトコルを送信し、FTPサーバーデータを書き込みます

パブリック関数アップロード($remote, $local,$file_mode=0664){

return ssh2_scp_send($this->conn_, $local, $remote, $file_mode);

}

//ファイルを削除する

パブリック関数remove($remote){

$sftp = ssh2_sftp($this->conn_);

$rc = false;

if (is_dir("ssh2.sftp://{$sftp}/{$remote}")) {

$rc = false ;

// ssh フォルダーを削除

$rc = ssh2_sftp_rmdir($sftp, $remote);

} 他 {

//ファイルを削除する

$rc = ssh2_sftp_unlink($sftp, $remote);

}

$rc を返す;

}

}

$config = [

"host" => "192.168.1.1 ", // FTP アドレス

「ユーザー」=>「***」、

「ポート」 => 「22」、

"pubkey_path" => "/root/.ssh/id_rsa.pub", // 公開鍵の保存アドレス

"privkey_path" => "/root/.ssh/id_rsa", // 秘密鍵の保存アドレス

];

$handle = 新しい SftpAccess();

$handle->init($config);

$rc = $handle->connect();

$handle->getData(remote, $local);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/976543.html技術記事この記事では、php で sftp を使用するチュートリアルを中心に、ftp プロトコル、ssh プロトコル、sftp プロトコルの導入とその他の知識を説明し、FTP および SFTP の操作クラスの実装コードを説明します...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート