写于:2016-08-16		最近一次更新:2016-08-16

Intent:

避免多次输入passphrase方便脚本自动化

Trouble:

在脚本中常常需要使用ssh登录到多台服务器执行命令,而每登录一台服务器就需要 输入一次passphrase,不便于脚本自动化;但清空passphrase会存在私钥不安全的风险 有没有即保证私钥安全,又可以实现脚本自动化的方法呢?

Oneway:

$cat /home/sman/test.sh #!/bin/bash # just test ssh login and show something for id in 1 2 3 4 5 do ssh 10.225.165.10$id cat /home/sman/application.log done $ssh-agent bash $ssh-add /home/sman/.ssh/id_rsa Enter passphrase for /home/sman/.ssh/id_rsa: <--- 输入 passphrase Identity added: /home/sman/.ssh/id_rsa (/home/sman/.ssh/id_rsa) $/home/sman/test.sh 显示一些log信息 显示一些log信息 显示一些log信息 显示一些log信息 显示一些log信息 $exit <---重要!

Details:

在执行 ssh-agent bash 后, bash将会作为ssh-agent的客户端运行, 使用 ssh-add 导入 id_rsa 输入 passphrase 后,ssh-agent的客户端bash将持有密钥信息, 所有在该bash及其子进程中使用/home/sman/.ssh/id_rsa的操作不需要再次输入passphrase 直到该 bash 进程被杀死,所以强烈建议执行 exit 退出该 shell