bash — беспарольный доступ по ssh к удаленной машине с использованием php?

Я использую приведенный ниже скрипт bash для подключения к удаленной частной машине с использованием ssh-соединения без пароля. Затем я запускаю набор команд на этом компьютере.

Я пытаюсь сделать то же самое, но запустить это на веб-странице с помощью PHP. Я не уверен, откуда я начну

Я попробовал что-то в php, но потерпел неудачу, но не уверен, как мне сделать пароль меньше, чем ssh-соединение в php?

ssh -t -o "StrictHostKeyChecking no" -i ~/.ssh/iduser_rsa iduser@10.xxx.22.133 '

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');

?>

1

Решение

phpseclib (http://phpseclib.sourceforge.net/) — это ухоженная библиотека для этого. У меня был небольшой опыт использования этой библиотеки для генерации ключей, но она позволит вам создать простое соединение SSH, используя любой из обычных протоколов, и запускать команды через соединение SSH.

Проверьте эта секция документации.

1

Другие решения

Похоже, вы используете аутентификацию ключа 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');
}
0