GNU/Linux >> Linux の 問題 >  >> Linux

PHP を介してリモート マシンでコマンドを実行する

サーバー A 上の PHP を介してサーバー B に対して SSH コマンドを実行します。

Linux のコマンド ラインで ssh コマンドを実行する方法は次のとおりです:http://www.youtube.com/watch?NR=1&feature=fvwp&v=YLqqdQZHzsU

Linux で PHP を使用してコマンドを実行するには、exec() コマンドを使用します。

これがあなたが正しい方向を見始めるきっかけになることを願っています.

パスワード プロンプトの自動化については、次の 2 つの投稿をご覧ください

  • https://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password
  • https://serverfault.com/questions/187036/execute-ssh-command-without-password

動かない場合の簡単な例を次に示します。 考えさせるコード:

<?php

    $server = "serverB.example.org";
    //ip address will work too i.e. 192.168.254.254 just make sure this is your public ip address not private as is the example

    //specify your username
    $username = "root";

    //select port to use for SSH
    $port = "22";

    //command that will be run on server B
    $command = "uptime";

    //form full command with ssh and command, you will need to use links above for auto authentication help
    $cmd_string = "ssh -p ".$port." ".$username."@".$server." ".$command;

    //this will run the above command on server A (localhost of the php file)
    exec($cmd_string, $output);

    //return the output to the browser
    //This will output the uptime for server B on page on server A
    echo '<pre>';
    print_r($output);
    echo '</pre>';
?>

推奨されるフローは、サーバー A でコマンドを実行してサーバー B に SSH することです


phpseclib を使用してリモート サーバーに安全に SSH または SCP を送信

composer require phpseclib/phpseclib でインストール

use phpseclib\Crypt\RSA;
use phpseclib\Net\SSH2;
use phpseclib\Net\SCP;

// Load your private key
$key = new RSA();
$key->loadKey('private key string');

// Connect to the server
$ssh = new SSH2('ip_address', 'port', 'timeout');
if (!$ssh->login('username', $key)) {
    throw new Exception("Unable to connect");
}

// Run a remote command
echo $ssh->exec('whoami');

// SCP put a string
$result = (new SCP($ssh))->put('remotePath', 'content to put');
// SCP put a file
$result = (new SCP($ssh))->put('remotePath', 'localPath', SCP::SOURCE_LOCAL_FILE);

// SCP get a file
$result = (new SCP($this->ssh))->get('remotePath', 'localPath');

// $result is true or false

Linux
  1. RDP経由でサーバーにログインします(Windows)

  2. リモート マシンに ssh するためのシェル スクリプトを記述し、コマンドを実行する

  3. Ubuntu / Linux で ssh を介して *on* リモート マシンでサウンドを再生する

  1. リモートサーバーからローカルマシンにファイルをコピーする方法は?

  2. リモートアクティブターミナルでコマンドを実行しますか?

  3. Rsync による暗号化されたリモート バックアップ?

  1. リモートLinuxサーバーを強制的に再起動します

  2. Ssh –リモートコマンドを実行し、Ssh接続から完全に切り離しますか?

  3. Ssh – Sshを介してグラフィカルモードでWindowsマシンからLinuxサーバーにアクセスしますか?