PHP リモート コピーとコマンドの実行
php リモート コピーしてコマンドを実行
php リモートコピーと実行コマンド
php がリモートでファイルをコピーし、リモートサーバーでコマンドを実行する場合、使用されるモジュールはすべて ssh2 接続ハンドルに基づいて完了します。
1. SSH2 モジュールのインストール
1.1 必要な拡張パックをインストールする
wget http://www.libssh2.org/download/libssh2-1.4.2.tar.gz tar zxf libssh2-1.4.2.tar.gz cd libssh2-1.4.2 ./configure && make && make install
wget http://pecl.php.net/get/ssh2-0.11.3.tgz cd ssh2-0.11.3 phpize (如果报错命令没有找到,apt-get install php5-dev) ./configure ―with-ssh2 && make && make install
1.2 PHP 設定情報の変更
cd /etc/php5/cgi vim php.ini 添加项:extension=/usr/lib/php5/20090626/ssh2.so ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
cd /etc/php5/cli vim php.ini 添加项:extension=/usr/lib/php5/20090626/ssh2.so ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
1.3 Web サーバーを再起動します
/etc/init.d/lighttpd restart
1.4 ssh2 がロードされているかどうかを確認します
[root@localhost ~]php -m | grep ssh2 ssh2
2. SSH2モジュールの接続アプリケーション
SSH2 に接続するには、ユーザー名とパスワード、および ssh キー形式の 2 つの方法があります。
2.1 ユーザー名とパスワード
$connection = ssh2_connect("192.168.6.222",22); if (ssh2_auth_password($connection,"veno","ubuntu")) { echo "Authentication Successful! "; }else{ die("Authentication Failed..."); }
2.2 ssh キー
$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa')); if (ssh2_auth_pubkey_file($connection, 'root', '/root/.ssh/id_rsa.pub', '/root/.ssh/id_rsa')) { echo "Public Key Authentication Successful\n"; } else { echo ('Public Key Authentication Failed'); }
追伸: 鍵の生成:
サーバー 192.168.6.229
に root としてログインします。
#ssh-keygen
ご質問がある場合は、Enter キーを押してください
結果の公開鍵は ~/.ssh/id_rsa.pub にあります
229 での鍵検証を通じて 222 にログインしたい場合は、229 の公開鍵 id_rsa.pub を 222 に設定し、まず手動で root にログインしてから、次のコマンドを実行します。
cat id_rsa.pub >> ~/.ssh/authorized_keys
このようにして、229 で 192.168.6.229 に ssh 接続し、パスワードを入力せずに 222 にログインできます。上記の php コードは 229 の検証にも合格できます。
3. SSH2 モジュールの具体的なアプリケーション
SSH2 検証に合格した後、取得された接続文字は $connection
です3.1 ファイルのリモート コピーを実装する
リモートサーバーファイルをローカルにコピーします:
bool ssh2_scp_recv ( resource $session, string $remote_file, string $local_file )
追記: ファイルを受信するときは、次のようなファイル名を空にすることができます:
ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/')
ローカル ファイルをリモート サーバーにコピーします
bool ssh2_scp_send ( resource $session, string $local_file, string $remote_file [, int $create_mode] )
追記: ファイルを送信する場合、次のようなファイル名を空にすることはできません:
ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
3.2 リモートサーバー上でコマンドを実行し、戻り値を取得します
resource ssh2_exec( resource $session, string $command [, string $pty [, array $env [, int $width [ , int $height [, int $width_height_type]]]] )
222 と 229 でコマンドを実行します:
$tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); stream_set_blocking($stream,true); echo stream_get_contents($stream);
添付ファイル: テストで使用した PHP コード
<?php echo "是访问到这里来了"; $connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa')); if (ssh2_auth_pubkey_file($connection, 'root', '/root/.ssh/id_rsa.pub', '/root/.ssh/id_rsa')) { echo "Public Key Authentication Successful\n"; //$flag=ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/'); //接收时,后面文件名可以为空 //$flag=ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml'); //发送时,后面的文件名不能为空 //echo $flag; $tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); stream_set_blocking($stream,true); echo stream_get_contents($stream); } else { echo ('Public Key Authentication Failed'); } echo "<br/>"; $connection = ssh2_connect('192.168.6.222', 22); ssh2_auth_password($connection, 'veno', '*******'); $tcmd="cd /home/veno/gateway/radiusclient;"; $tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d"; $stream = ssh2_exec($connection, $tcmd); echo "<br/>"; echo "-----------------------------------------------"; stream_set_blocking($stream,true); echo stream_get_contents($stream); echo "-----------------------------------------------"; echo "<br/>";

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック










![Windows 11 の Telnet 完全チュートリアル [インストール/有効化とトラブルシューティング]](https://img.php.cn/upload/article/000/000/164/168476253791019.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
<p>Telnet は「ターミナル ネットワーク」の略称です。これは、ユーザーが 1 台のコンピュータをローカル コンピュータに接続するために使用できるプロトコルです。 </p><p>ここで、ローカル コンピュータとは接続を開始するデバイスを指し、ローカル コンピュータに接続されているコンピュータをリモート コンピュータと呼びます。 </p><p>Telnet はクライアント/サーバー プリンシパルで実行され、時代遅れではありますが、2022 年現在でも多くの人に使用されています。多くの人はすでに Microsoft が提供する最新のオペレーティング システムである Windows 11 オペレーティング システムに切り替えています。 &

クラウド コンピューティングとモノのインターネットの発展に伴い、サーバーのリモート操作がますます重要になっています。 Python では、Paramiko モジュールを使用して SSH リモート操作を簡単に実装できます。この記事では、Paramiko の基本的な使い方と、Python で Paramiko を使用してサーバーをリモート管理する方法を紹介します。 Paramiko とは Paramiko は、SSH クライアントの接続と制御に使用できる SSHv1 および SSHv2 用の Python モジュールです。

ほとんどの Windows ユーザーにとって、使いやすいグラフィカル インターフェイスを提供するリモート デスクトップ プロトコル (RDP) は常にリモート管理の最初の選択肢となってきました。ただし、より詳細な制御が必要なシステム管理者にとっては、SSH の方がニーズに適している可能性があります。 SSH を介して、管理者はコマンド ラインを通じてリモート デバイスと対話できるため、管理作業がより効率的になります。 SSH の利点はセキュリティと柔軟性にあり、特に多数のデバイスを扱う場合や自動化されたタスクを実行する場合、管理者はリモート管理やメンテナンス作業を簡単に実行できます。したがって、使いやすさの点では RDP が優れていますが、システム管理者にとっては、パワーと制御の点では SSH の方が優れています。以前は、Windows ユーザーは借用する必要がありました

背景: リモート サーバーの Mysql データベースにアクセスする必要がある場合、Mysql データベースのセキュリティ期間中は、セキュリティ対策がローカル接続のみを許可するように設定されています (つまり、接続を使用するにはサーバーにログインする必要があります) )、他のリモート接続に直接アクセスできなくなり、対応するポートも変更されているため、ssh に基づいてデータベースに接続する必要があります。この方法でデータベースに接続することは、ssh 接続に基づく Navicat のインターフェイスと同じです。 Navicat はデータベース インストール サポート ライブラリに接続します。Mysql に接続する場合は、まず pymysqlpipinstallpymysql をインストールして、ssh ベースのライブラリ sshtunnelpipinstallsshtunnel# をインストールする必要があります。

解決策: 1. ネットワーク接続を確認する; 2. サーバーの状態を確認する; 3. キャッシュと Cookie をクリアする; 4. ファイアウォールとセキュリティ ソフトウェアの設定を確認する; 5. 他のネットワークを使用してみるなど。

CONNECTION_REFUSED は、通常、リモート サーバーに接続しようとしたときに発生するネットワーク接続エラーです。クライアント デバイスがサーバーとのネットワーク接続を確立しようとして、サーバーが接続要求を拒否すると、CONNECTION_REFUSED エラーが返されます。一般的な理由には、サーバーが起動していない、サーバーがこれ以上の接続要求を受け入れることができない、サーバーのファイアウォールが接続をブロックしているなどがあります。

今日の急速な技術発展の時代では、雨後の筍のようにプログラミング言語が出現しています。多くの注目を集めている言語の 1 つは Go 言語です。Go 言語は、そのシンプルさ、効率性、同時実行の安全性などの機能により多くの開発者に愛されています。 Go 言語は、多くの優れたオープンソース プロジェクトがある強力なエコシステムで知られています。この記事では、厳選された 5 つの Go 言語オープンソース プロジェクトを紹介し、読者を Go 言語オープンソース プロジェクトの世界へ導きます。 KubernetesKubernetes は、自動化されたオープンソースのコンテナ オーケストレーション エンジンです。

「Go 言語開発の要点: 5 つの人気フレームワークの推奨事項」 高速で効率的なプログラミング言語として、Go 言語はますます多くの開発者に好まれています。開発効率を向上させ、コード構造を最適化するために、多くの開発者はフレームワークを使用してアプリケーションを迅速に構築することを選択します。 Go 言語の世界には、選択できる優れたフレームワークが数多くあります。この記事では、5 つの人気のある Go 言語フレームワークを紹介し、読者がこれらのフレームワークをよりよく理解して使用できるように、具体的なコード例を示します。 1.GinGin は高速な軽量 Web フレームワークです。
