我们有一个由多个用户共享的数据处理工作站。我想在那台机器上设置一个脚本来处理我的数据,然后将其复制回我的个人机器。
我最近了解了 ssh 公钥身份验证,所以我的第一个想法是将该机器的公钥添加到我的authorized_keys
文件中,并scp
在脚本中添加一个命令。但是,如果该机器上的任何人都知道我的机器的 IP 地址,那么他们就可以通过 ssh 进入我的机器。安全地设置这类东西的正确方法是什么?
答案1
您可以做的是设置另一种方式的公钥认证;即在您的个人机器上创建一个密钥对,并将公钥添加到数据处理工作站的authorized_keys中。
数据处理将通过 ssh 连接到 DP 工作站、运行命令,然后将其复制回来来启动。例如,
#!/bin/sh
ssh common@dp /path/to/process_data_script
scp common@dp:/path/to/data /copy/here
答案2
由于数据处理工作站 (DPW) 没有正确设置多用户访问,并且您不打算这样做,那么您可能更适合对已处理的数据进行拉取而不是推送:即,您可以让您的 DPW 作业通过电子邮件向您发送警报,然后您手动通过 SFTP/SCP 进入 DPW 并获取已处理的数据,或者您可以定期(比如每小时rsync
)将 DPW“数据已处理”文件夹“愚蠢地”拉取到您机器上的源文件夹(可以选择--remove-sent-files
在传输后删除 DPW 数据)。
答案3
首先,私钥应该具有权限0600
,以便只有您(或盒子上的 root 用户)可以读取。
私钥通常有密码,这样闲杂人无法使用它们,但这对脚本不起作用。处理此漏洞的一种方法是设置另一个帐户,该帐户仅具有访问和执行所需操作所需的权限。
最后,考虑反过来做这个操作。让你信任的机器从另一台共享机器获取数据。你建议的方向更容易受到攻击。如果你愿意,你可以设置某种信号脚本,这样远程机器就可以说“嘿,我完成了,快来拿吧”,而你的本地机器可以启动一个作业来执行传输。