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衣類リムーバー

Video Face Swap
完全無料の 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 ユーザーは借用する必要がありました

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

1. ssh 相互信頼の目的 1. SSH 相互信頼は、クラスターを構築するときに必要です。これは、別のノードでの操作を便利にするのに役立ちます。 2. scp リモートコピー操作を使用する場合、ターゲットサーバーのユーザー名とパスワードを入力する必要がありますが、このとき、Linux サーバー間に SSH 相互信頼を設定することで、複数のサーバー間で操作する場合にパスワードなしでログインできるようになります。 Linuxサーバー。 2. ssh 相互信頼構成の原理. つまり、サーバーが対象ホストの証明書を保存し、パスワードを入力しなくても自動的に認証が完了するようにします。 3. SSH 相互信頼の構成手順 1. 各ノードは、独自の公開鍵と秘密鍵のペアを生成します。 2. 公開鍵ファイルを相手に送信します。 3. 相互信頼構成が成功したかどうかを確認します。 4. ここで MYDB01 を使用して ssh 相互信頼を構成し、

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

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

CentOS7.9 はサーバー構築やシステム管理の際によく使われるオペレーティングシステムのバージョンであり、この記事では CentOS7.9 のインストールと SSH のインストールの詳細な手順と手順を説明します。 CentOS7.9 は、無料のオープン ソース Linux オペレーティング システムです。Red Hat Enterprise Linux (RHEL) をベースにしたバイナリ互換バージョンです。CentOS7.9 をインストールする手順は次のとおりです。 1. ISO イメージ ファイルをダウンロードする必要があります。 CentOS7.9の最新版CentOS7.9 ISOイメージファイルをCentOS公式サイトからダウンロードしてください。 2. コンピュータ上に新しい仮想マシンまたは物理マシンを作成し、インストールします。
