假设我需要通过 SSH 连接到许多系统并在每个系统上运行一个简单的命令。问题是我不想连续输入密码 50 次才能完成此操作。所以我想我会暂时使用没有密码的 RSA 密钥。我的问题是,这种标准做法是否是为了运行非交互式脚本而暂时将私钥文件设置为没有密码,然后您将通过ssh-keygen -p
命令设置一个非常安全的密码?还有其他方法可以实现此目的吗?
答案1
我的问题是,这种标准做法是否是为了运行非交互式脚本而暂时将私钥文件设置为没有密码[...]
不会。标准做法是使用密钥代理来存储您的密码。使用密钥代理时,您可以在将密钥添加到代理时输入一次密码,然后代理会将其提供给您发起的 ssh 连接。
有很多关于这方面的教程。简而言之,这是基本用法:
# start ssh key agent and set environment variables
eval $(ssh-agent)
# add your private key
ssh-add
简而言之,它是如何工作的:
该
ssh-agent
命令输出一些您需要设置的环境变量,以便程序(如ssh
、scp
等rsync
)找到ssh-agent
进程。该输出已准备好执行,以实际设置变量,这就是该eval
语句的目的。ssh-add
通过配置的环境变量找到ssh-agent
进程,并将私钥添加到~/.ssh
目录中的默认位置。此时,系统会要求您输入密码。
此后,您将能够ssh
、scp
、 和其他人访问您的密钥被授权的任何服务器,而无需重新输入密码。