使用 PHP SSH 进入一台机器

SSH into a machine using PHP

我正在尝试


我的命令

ssh user@45.12.129 "cd ~/scripts; pwd; ./startVM.sh"

PHP

$cmd = 'ssh user@45.12.129 "cd ~/scripts; pwd; ./startVM.sh";
$data = shell_exec($cmd);

我不确定何时输入密码。 我希望有人可以填写我错过的内容。

最简单(但不一定最安全)的方法是创建无密码 ssh 密钥并将其添加到您的 VM:

  • 运行 ssh-keygen 创建一个新的 public/private 密钥对,如果您还没有(或者如果您只想为此目的创建一个新密钥)
  • 将生成的 public 密钥放入虚拟机中用户的 ~/.ssh/authorized_keys 中。确保此文件只能由目标用户读取和写入。 (它应该有模式 0500。)
  • ssh 现在无需密码即可使用。 (实际上,私钥 密码。)
  • 如果要指定要使用的特定密钥,请指定 ssh -i path-to-key-file

警告: 请记住,允许远程执行代码可能非常危险,尤其是当目标是根帐户时。如果这是一个本地虚拟机,你应该相对安全,但在一般情况下使用这种技术时要小心,尤其是在互联网上。这样你很容易搬起石头砸自己的脚

为此,您可能想在 VM 中创建一个 non-root 用户。如果该用户需要 root 权限来完成其任务,则仅授予对 sudo 和适当的 sudoers 文件条目所需的 特定 功能的访问权限。

你能试试这样的吗?

        if(!($con = ssh2_connect($ip, $port))){
            echo'cannot connect';
        } else {
            //Auth
            if(!ssh2_auth_password($con, "userssh", "password")) {
                echo'authentication failed';
            } else {
                //Execute command
                if(!($stream = ssh2_exec($con, "cd ~/scripts; pwd; ./startVM.sh" )) ){
                    echo 'failed executing';
                } else {
                     echo 'sucess';

                }
            }
         }