【发布时间】:2015-05-15 10:58:21
【问题描述】:
自从两天谷歌搜索和阅读论坛以来,我一直在尝试一些事情,但没有任何成功。
我有一个托管在 Namecheap.com 上的 MySQL 数据库,我需要通过 Python 脚本从本地 linux 机器访问该数据库,以创建表和条目。 名不虚传”
“由于安全原因,远程 MySQL 连接在我们的共享服务器上被禁用,但您可以使用带有 MySQL 端口 (3306 ) 转发。完成后,您将在本地计算机上使用端口 3306 侦听并转发到端口 3306 上的远程服务器的本地主机。因此,您可以有效地连接到远程服务器的 MySQL 数据库,就好像它在本地机器上运行一样。"
并举一个使用 PuTTY 的例子
“使用您的服务器 IP 地址作为主机名和端口 21098 在 PuTTY 中创建会话”
关键是我需要我的 Python 脚本自动执行此操作,而无需提示输入密码等。
读过一些关于 paramiko 的文章,但没有明白这一点,因为 SSH 对我来说是新事物(除了访问我的 linux 机器)。
输入密码后,我可以通过命令行成功手动登录到我的主机帐户,但这仅仅是因为那时我不知道如何运行我机器上的脚本。
ssh -p 21098 my_user_name@server137.web-hosting.com
编辑:
太好了,在清理了我的 python 目录之后,至少现在发生了一些事情(剩余的 paramiko.py 文件产生了问题)。
还在脚本的第 2 行做了一个小改动 (ssh = SSHClient() ->> ssh = paramiko.SSHClient())
然后执行以下操作:
ssh -p 21098 my_username@server137.web-hosting.com
登录远程主机,登录成功后输入我的密码
ssh-keygen -t rsa
创建了一个没有密码短语的密钥,然后我通过 ftp 恢复它以将其保存在我的本地计算机文件夹中
/home/daniel/python_scripts/sshkey
回到我的本地机器,然后在 python 脚本下运行
#!/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' 显然不是如图所示......
不管怎样,有些事情我不明白而且显然做错了.....
【问题讨论】:
标签: python mysql linux ssh ssh-tunnel