我们运行一个创建很多目录的应用程序。一旦应用程序完成,我们就不需要这些目录。因此我们想删除它们,因为它们消耗大量空间。问题是该应用程序正在远程服务器上运行。我必须编写一个 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 代理是另一种选择。