自动删除远程服务器中的文件

自动删除远程服务器中的文件

我们运行一个创建很多目录的应用程序。一旦应用程序完成,我们就不需要这些目录。因此我们想删除它们,因为它们消耗大量空间。问题是该应用程序正在远程服务器上运行。我必须编写一个 shell 脚本来从远程服务器中删除这些目录。

我尝试了 ssh 命令

ssh [email protected] 'rm /some/where/some_file.war' 

但它要求输入密码。然后我按照以下步骤操作

设置无密码密钥,然后添加该命令作为 ssh 命令的一部分。看:http://www.dotkam.com/2009/03/10/run-commands-remotely-via-ssh-with-no-password/

我能够按照描述执行所有步骤,但最后它再次要求输入密码。

如何在没有密码的情况下使用 ssh?

答案1

使用带有公钥身份验证的 ssh。为此,您需要使用公钥生成密钥对ssh-keygen并将公钥复制到远程系统。具体来说,用于将(例如)本地 PC 上username的内容附加到远程系统上。id_rsa.pub~username/.ssh/authorized_keys

如果您根本不想输入密码,则不要对私钥进行密码保护,例如-N在密钥生成期间使用选项(对于 openssh),如下所示

ssh-keygen -N '' ...

然而,任何密码保护都没有明显的安全隐患;具体来说,您必须以其他方式保护私钥。 (在这种设置中,仅出于给定任务的目的使用专用密钥对,同时限制username通过 ssh 可以执行的操作可能是个好主意。)

如果您使用 openssh 并且愿意输入一次密码,那么使用 ssh 代理是另一种选择。

相关内容