[英]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.