簡體   English   中英

如何執行使用ssh與php的bash腳本

[英]How to execute a bash script that use ssh with php

我想用php執行我的腳本bash。 我的腳本將我登錄到我的服務器,然后創建我的帳戶。

SCRIPT="useradd martinouh --home /home/martinouh --create-home; echo martinouh:$pass | chpasswd; usermod -s /bin/bash martinouh; usermod -aG sudo martinouh; usermod -aG docker martinouh;"

sshpass -p $pass ssh -o StrictHostKeyChecking=no root@$ip   "${SCRIPT}"

sshpass -p $pass ssh-copy-id -i /home/Martinouh/.ssh/id_rsa.pub martinouh@$ip

但是當我通過shell_exec();運行它時shell_exec(); 它確實執行腳本但不執行sshpass部分。

我該怎么做才能執行它?

目前,只是為了測試shell_exec(); 我正在通過調用包含以下內容的localhost / script.php來執行我的腳本

<?php
  $output = shell_exec('bash select.sh');
  echo $output;
?>

我在error_log中得到了這個:

 Failed to change pseudo terminal's permission: Permission denied
 Failed to change pseudo terminal's permission: Permission denied
 Failed to change pseudo terminal's permission: Permission denied
 Failed to change pseudo terminal's permission: Permission denied

也許它與selinux和apache權限有關?

由於錯誤消息引用偽終端,請嘗試使用-T禁用此功能。 大多數需要偽終端功能的功能都是交互式的,無論如何都不適用於這種情況。

好了,我已經禁用了SELinux,它確實執行了日志然后添加用戶的部分......

但它不會這樣做

sshpass -p $pass ssh-copy-id -i /home/Martinouh/.ssh/id_rsa.pub martinouh@$ip

我在我的網頁上看到這個

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/home/Martinouh/.ssh/id_rsa.pub': Permission denied

所以我試着移動鍵和chown -R apache:apache就可以了,我得到的是我的網頁:

/usr/bin/ssh-copy-id: ERROR: failed to open ID file './id_rsa': No such file or directory (to install the contents of 'id_rsa.pub' anyway, look at the -f option)

我嘗試使用-f但它沒有改變

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/.pub': No such file or directory

編輯:

它現在正在禁用SELinux並且要更正ssh-copy-id,我必須將id_rsa.pub和id_rsa復制到一個目錄並且chown -R apache:apache這兩個。 私鑰是必需的,否則我不能將我的id_rsa.pub復制到服務器(即使使用-f標志)。

現在我應該如何糾正這一點,我們知道是什么使它起作用(即使它不是正確的方式?)

  • 給apache訪問權限〜/ .ssh /? (對於ssh-copy-id)

  • 給apache執行腳本/ shell的權利? (SELinux)的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM