2014-09-25 67 views
0

我正在使用Python脚本和pysftp模块连接到SFTP服务器。如何在Python pysftp中加密密码?

显然,我可以通过一个SFTP密码明确,我不喜欢。

我的问题:我怎么能对加密的一个,以避免有人从可见的世界替换密码?

+1

密码应该是不可见的*上线*。无论如何,在某些时候,您需要知道未加密的密码才能对其进行加密。 – monkut 2014-09-26 01:08:36

回答

0

我发现了这个问题的解决方案。这个对我有用。 而不是使用密码的显式文本,我首先编码它,并把剧增的形式放入脚本。

像这样:

import base64 

## To encrypt: 
base64.b64encode("XYZ") 
## you got 'WFla' 

## To decrypt: 
base64.b64decode("WFla") 
# you got 'XYZ' 
0

你的意思是你不想要的密码是在代码或配置文件可见?无法以允许自动解密的方式对任何内容进行加密。你所能做的只是混淆密码,但并不真正加密密码。如果任何人都可以访问你的代码,他/她总是可以对你的“加密”进行逆向工程。

+0

马丁。你是对的。让我们称之为混淆......我的目标不是加密密码,而是在有人打开python脚本时不可读。我怎么能混淆它呢?谢谢 – susja 2014-09-26 11:36:13

+0

那么......我找到了解决我的问题的方案。我使用了base64模块,它满足了我的需求。我明白,任何人都可以解码它,但我的目标只是隐藏它在python文本文件中不可读。感谢所有的建议。我现在都在 – susja 2014-09-26 13:50:04

+0

@susja发布它作为答案并接受它来关闭这个问题。 – 2014-09-26 14:57:55

0

保持密钥和密码,以世界不可见的标准方法是不把它们存放的地方世界可读。这通常意味着不要将它们放入脚本中,而是配置文件(例如netrc),这些文件又被设置为只能由您读取。更现代的选择是keyring服务,如kwallet。

此外,SSH(及其子协议SFTP)支持认证使用不对称密钥加密。通过使用authentication agent,您可以将这些密钥保存在单独的进程中,因此您的脚本不需要解密或存储它们的功能。

两个SSH代理和钥匙圈服务支持加密密钥存储本身,但是否这样做(何)是从从他们请求键程序隐藏。如果您使用的SFTP