Conexões SSH com PHP

download Conexões SSH com PHP

If you can't read please download the document

Transcript of Conexões SSH com PHP

1. Conexes SSH com PHPFelipe Weckx 2. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx2/15Agenda Para que usar SSH no PHP? Bibliotecas disponveis Mtodos de autenticao Execuo de comandos Transferncia de arquivos 3. Para que usar SSH no PHP?PHP Conference 2014 Conexes SSH com PHPFelipe Weckx3/15 Automao! Deploy Levantamento de dados de servidores Execuo de rotinas de manuteno Start/Stop de servios Monitoramento logs 4. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx4/15Bibliotecas Disponveis ext/ssh2 Extenso em C Somente SSHv2 Utiliza libssh2 Instalao noservidor Procedural PHPSecLib Totalmente emPHP Suporte SSH v1 ev2 Fcil de embutirna aplicao Orientada aObjetos 5. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx5/15Mtodos de Autenticao Password Keyboard-interactive (>= 0.12) Chave RSA Com senha Multi-fator Sem autenticao 6. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx6/15Conectando e Autenticando$con = ssh2_connect('ssh.com', 22);//Autenticao por senhaif (!ssh2_auth_password($con, 'user', 'pass') {die('Erro no login com senha')}//Autenticao por chave RSAif (!ssh2_auth_pubkey_file($con, 'user','id_rsa.pub', 'id_rsa','secret')) {Die('Erro no login com chave');} 7. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx7/15Executando Comandos$stream = ssh2_exec($con, $cmd);if (!$stream) {die('Erro ao executar comando');}stream_set_blocking($stream, true);stream_set_timeout($stream, 15);$result = stream_get_contents($stream);fclose($stream); 8. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx8/15Consideraes ssh2_exec Executa um comandosimples Comandos interativos podem darproblema Sempre defina o tempo de timeout 9. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx9/15Comandos interativos Utilizar fwrite e fread Enviar o comando com no final n Ler e interpretar a resposta Enviar prxima informao PHPSecLib tem o mtodo read que jsuporta expresses regulares 10. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx10/15Comandos Interativos$ssh = new Net_SSH2($host);if (!$ssh->login($user, $pass)) {exit('Login Failed');}//Aguarda o prompt$output = $ssh->read('$');//Executa o comando com sudo$ssh->write("sudo ls -lan");//Aguarda o prompt da senha e envia a senha$output .= $ssh->read('/[pP]assword[^:]*:/', NET_SSH2_READ_REGEX);$ssh->write("{$pass}n");//L o restante at o prximo prompt$output .= $ssh->read('$'); 11. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx11/15Transferindo Arquivos ssh2_scp_send($con,'/tmp/teste_local.txt','/tmp/teste_remoto.txt); ssh2_scp_recv($con,'/tmp/teste_remoto.txt','/tmp/teste_local.txt'); 12. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx12/15Laravel Utiliza PHPSecLib Classes de abstrao SSH::into('staging')->run(array('cd /var/www','git pull origin master',)); Envoy Task Runner @task('deploy', ['on' => ['web-1', 'web-2']])cd sitegit pull origin {{ $branch }}php artisan migrate@endtask 13. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx13/15Segurana Nunca manter username e senha nocdigo fonte Preferir uso de arquivos de chaves Trocar as chaves periodicamente Log de todas as operaes 14. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx14/15Perguntas? 15. PHP Conference 2014 Conexes SSH com PHPFelipe Weckx15/15ObrigadoFelipe [email protected]@weckxgithub.com/weckxlinkedin.com/in/felipeweckxhttp://blog.weckx.net