Я использую приведенный ниже скрипт bash для подключения к удаленной частной машине с использованием ssh-соединения без пароля. Затем я запускаю набор команд на этом компьютере.
Я пытаюсь сделать то же самое, но запустить это на веб-странице с помощью PHP. Я не уверен, откуда я начну
Я попробовал что-то в php, но потерпел неудачу, но не уверен, как мне сделать пароль меньше, чем ssh-соединение в php?
ssh -t -o "StrictHostKeyChecking no" -i ~/.ssh/iduser_rsa [email protected] '
echo "hostname" > /tmp/iamhere.txt
cd /opt/im/olywc/bin/
echo "Checking server status:"sudo ./status.sh
echo ""
ps -ef |grep -i main |grep -v grep
echo ""
echo "End of restart function"
exit
'
Преобразовал вышеприведенный код в PHP
include('Net/SSH2.php');
$ssh = new Net_SSH2('10.xxx.22.133');
if (!$ssh->login('', '')) {
exit('Login Failed');
}function printOutput($str)
{
echo $str;
}
$ssh->exec('
echo "I am here" > /tmp/iamhere.txt
cd /opt/im/olywc/bin/
echo "Checking server status:"sudo ./status.sh
echo ""
ps -ef |grep -i main |grep -v grep
echo ""
echo "End of restart function"
exit
'
, 'printOutput');
?>
phpseclib (http://phpseclib.sourceforge.net/) — это ухоженная библиотека для этого. У меня был небольшой опыт использования этой библиотеки для генерации ключей, но она позволит вам создать простое соединение SSH, используя любой из обычных протоколов, и запускать команды через соединение SSH.
Проверьте эта секция документации.
Похоже, вы используете аутентификацию ключа RSA в CLI-версии команды. например. ~/.ssh/iduser_rsa
, Так что попробуйте это:
include('Net/SSH2.php');
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$rsa->loadKey(file_get_contents('/home/user/.ssh/idusa_rsa'));
$ssh = new Net_SSH2('10.xxx.22.133');
if (!$ssh->login('', $rsa)) {
exit('Login Failed');
}