2024-09-30 05:16:51 发布
网友
我使用Python脚本和pysftp模块连接到SFTP服务器。在
显然,我可以明确地传递我不喜欢的SFTP密码。在
我的问题是:我如何替换加密密码,以避免别人被世人看到?在
您的意思是您不希望密码在代码或配置文件中可见吗?不可能以允许自动解密的方式加密任何东西。你所能做的就是混淆密码,而不是真正加密它。如果有人可以访问你的代码,他/她总是可以对你的“加密”进行反向工程。在
保持密钥和密码不为世人所知的标准方法是不将它们存储在世界可读的地方。这通常意味着不要将它们放在脚本中,而是将诸如netrc这样的配置文件设置为只能由您读取。一个更现代的选择是keyring服务,比如kwallet。在
此外,SSH(及其子协议SFTP)支持使用非对称密钥加密进行身份验证。通过使用authentication agent,您可以将这些密钥保存在一个单独的进程中,因此您的脚本一开始就不需要解密或存储它们。在
SSH代理和keyring服务都支持对密钥存储本身进行加密,但对向它们请求密钥的程序来说,加密是否完成(以及在哪里)是隐藏的。在
我找到了解决这个问题的办法。对我有用。 我没有使用密码的显式文本,而是首先对其进行编码,然后将输入的形式放入脚本中。在
像这样:
import base64 ## To encrypt: base64.b64encode("XYZ") ## you got 'WFla' ## To decrypt: base64.b64decode("WFla") # you got 'XYZ'
您的意思是您不希望密码在代码或配置文件中可见吗?不可能以允许自动解密的方式加密任何东西。你所能做的就是混淆密码,而不是真正加密它。如果有人可以访问你的代码,他/她总是可以对你的“加密”进行反向工程。在
保持密钥和密码不为世人所知的标准方法是不将它们存储在世界可读的地方。这通常意味着不要将它们放在脚本中,而是将诸如netrc这样的配置文件设置为只能由您读取。一个更现代的选择是keyring服务,比如kwallet。在
此外,SSH(及其子协议SFTP)支持使用非对称密钥加密进行身份验证。通过使用authentication agent,您可以将这些密钥保存在一个单独的进程中,因此您的脚本一开始就不需要解密或存储它们。在
SSH代理和keyring服务都支持对密钥存储本身进行加密,但对向它们请求密钥的程序来说,加密是否完成(以及在哪里)是隐藏的。在
我找到了解决这个问题的办法。对我有用。 我没有使用密码的显式文本,而是首先对其进行编码,然后将输入的形式放入脚本中。在
像这样:
相关问题 更多 >
编程相关推荐