我目前是一名程序员,因此需要不断将我的软件上传到远程系统进行测试。我有大约 7 台机器需要接收所有内容的副本。
目前,我有一个简短的 bash 脚本,其中 scp 为每台远程机器执行传输:
echo -e "\nUpdating Taiwan Machine"
scp {file1,file} bschlinker@taiwan:/home/bschlinker/
echo -e "\nUpdating Wisconsin Machine"
scp -P 2400 {file1,file2} bschlinker@wisconsin:/home/bschlinker/
每台机器都会提示我输入密码。我知道我可以用 SSH 密钥解决这个问题——但我不想通过密钥对远程机器进行无密码身份验证。因此,我在 SSH 密钥上设置了一个密码。我读到,输入一次密码后,它将在当前终端会话的剩余时间内保持有效。这是真的吗?如果不是,有什么想法吗?
答案1
如果你正在运行 SSH 代理(例如巧妙命名的ssh-agent
),那么你可以将密钥添加到代理,SSH 客户端将与代理进行通信以从中获取钥匙。
答案2
您需要 SSH-AGENT 来实现这一点。然后,根据您的操作系统,您可以将其配置为在您登录时开始运行并提示您输入密码。之后,只要您登录,它就会使用您的密钥提供 ssh 会话。
SSH-AGENT 还可以做一些更聪明的事情 - 如果您 ssh 到一台机器,然后从该机器 ssh 到第三台服务器(您也拥有该服务器的公钥),则第二台机器也将通过代理自动进行身份验证(这称为代理转发)。