【问题标题】:change sshpass to a more secure solution将 sshpass 更改为更安全的解决方案
【发布时间】:2018-02-26 04:29:56
【问题描述】:

我有一个包含以下函数的 python 脚本:

def upload2server(file):
    host_name = 'example.ex.am.com'
    port_num = '432'
    user_name = 'user'
    password = 'passw'
    web_path = '/example/files/'
    full_webpath = user_name + '@' + host_name + ':' + web_path + args.key
    pre_command = 'sshpass -p "' + password + '" scp -P' + ' ' + port_num + ' ' 

    scp_comm = pre_command + file + ' ' + full_webpath 

    os.system(scp_comm)

我有两个问题:

  1. 如果我使用端口转发从远程网络运行此脚本,会有多不安全?
  2. 我可以通过哪些方式使上传更安全?

谢谢!

【问题讨论】:

    标签: python ssh scp


    【解决方案1】:

    就个人而言,我会为每个主机生成一个 SSH 密钥对,然后您就可以完全忘记在 scp 命令中使用密码。将密码内联并不是问题,但这确实意味着您的密码将记录在该用户的 ~/.bash_history 文件中。

    【讨论】:

    • 只是为了确保我清楚地理解它:我生成了一个 ssh 密钥对:ssh-keygen -t -rsa 我得到了一个公钥和一个私钥。我将公钥复制到服务器上,并将私钥留在我的客户端计算机上。现在我可以安全地进行身份验证。我的问题:如果我想从我的笔记本电脑、电脑、两部手机、平板电脑连接到服务器,我应该为每台设备生成还是将该私钥复制到我第一次生成的每台设备?谢谢
    • 是的,你知道了@Marci!您应该为每个设备生成不同的密钥,并将它们的公钥复制到服务器授权的主机目录。
    • 我需要的任务是一个移动应用程序,它与服务器建立 ssh 连接。当他们下载应用程序时,我是否应该让整个 ssh 密钥生成并将其复制到服务器的东西,所以在 android/java 代码中?
    • 还是解决方法没那么简单?
    • 我认为我不会使用 SCP 从 Android 应用程序中移动文件。如果有人拆开您的应用程序,并获得他们可以登录您的服务器的密钥的访问权限。我可能会制作一个处理此问题的 api。应该有一些用 Flask 做这件事的好例子。
    猜你喜欢
    • 2021-05-06
    • 2021-08-17
    • 2014-07-28
    • 2016-04-27
    • 2011-03-20
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多