2015-03-13 4 views
0

Я пытаюсь что-то с двухдневного поиска в Google и чтениях без каких-либо успехов.Сценарий Python для подключения через SSH-туннель к базе данных MySQL в Namecheap

У меня есть база данных MySQL, размещенная на Namecheap.com, которая мне нужна для доступа с локальной локальной машины через скрипт Python для создания таблиц и записей. Namecheap сказать «

» Удаленное соединение MySQL отключен на наших общих серверах из-за соображений безопасности, но вы можете легко настроить SSH туннель между вашим компьютером и нашим сервером с использованием SSH-клиент (например, Putty) с MySQL порт (3306). После его завершения вы будете иметь порт 3306 на своем локальном компьютере, который будет прослушивать и перенаправлять локальный хост вашего удаленного сервера на порт 3306. Таким образом, вы можете эффективно подключиться к базе данных удаленного сервера MySQL, как если бы она выполнялась в вашем локальном поле. "

И приведу пример, используя PuTTY

„Создать сессию в PuTTY с помощью сервера IP-адрес в качестве имени хоста и порт 21098“

Дело в том, что мне нужен Python скрипт для делать это автоматически без какого-либо запроса пароля и т.д.

Прочитали что-то о paramiko, но не поняли, как SSH-то новое для меня (кроме доступа к моей машине Линукса).

Я могу успешно войти в систему вручную через командную строку в мою учетную запись хостинга после ввода пароля, но это примерно все, потому что тогда я не знаю, как запустить скрипт, который находится на моей машине.

ssh -p 21098 [email protected] 

Edit:
Великий, что-то, по крайней мере сейчас происходит после того, как очистить мой каталог питона (остальные paramiko.py файл созданные проблемы). также сделал небольшое изменение в строке 2 вашего сценария (SSH = SSHClient() - >> SSH = paramiko.SSHClient())

Тогда сделал следующее:

ssh -p 21098 [email protected] 

для входа в пульт дистанционного управления хост, и после успешного Логин вводит пароль

ssh-keygen -t rsa 

создан ключ без pasphrase который я потом рекуперируемый через FTP, чтобы сохранить его в моей локальной папке машины

/home/daniel/python_scripts/sshkey 

назад к моей локальной машине я тогда работать под питона скрипт

#!/usr/bin/python 
import paramiko 

#clean the screen 
os.system('clear') 
myPkey = paramiko.RSAKey.from_private_key_file('/home/daniel/python_scripts/sshkey/key') 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #if you want to auto add the host RSA key 
ssh.connect('server137.web-hosting.com', 21098, 'my_username', pkey=myPkey) 

sys.exit() 

, но это то, что я получил:

Traceback (most recent call last): 
File "./my_vimeo.py", line 13, in <module> 
ssh.connect('server137.web-hosting.com', 21098, 'my_username', pkey=myPkey) 
File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 307, in connect 
look_for_keys, gss_auth, gss_kex, gss_deleg_creds, gss_host) 
File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 519, in _auth 
raise saved_exception 
paramiko.ssh_exception.AuthenticationException: Authentication failed. 

«my_username», очевидно, не один, как показано ....

Все, что есть что-то, что я не понимаю, и, очевидно, неправильно .....

ответ

2

Paramiko - это именно то, что вы ищете.

В принципе, это клиент SSH (например, PuTTY, для одного ..), который поддерживает TTY. По существу, вы должны использовать их класс SSHClient и вызвать метод connect. Вы можете сделать это без пароля. Однако вам понадобится открытый ключ, который paramiko также поддерживает вместо пароля.

Итак, где-то вдоль линии, когда вы делаете ssh -p 21098 [email protected], что вы говорите, это сервер137, проверьте открытый ключ в файле моих глав и проверьте, могу ли я подключиться.

Вы можете затем использовать открытый ключ вместо:

import paramiko 

myPkey = paramiko.RSAKey.from_private_key_file('<private_key_path_on_your_server>') 
ssh = SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #if you want to auto add the host RSA key 
ssh.connect('server137.web-hosting.com', 21098, 'my_user_name', pkey=myPkey 

Вы можете увидеть, как настроить ключи здесь: Paramiko ssh connection without password

Paramiko документацию для SSHClient здесь: Paramiko Client docs