在我的Bash脚本中,我使用SCP将一些文件复制到另一台机器上。
但我正在所有主机上使用Keychain程序。 当钥匙串已经加载ssh-agent时,没有问题。
但是,当远程主机的密钥尚未加载时,连接后,Keychain会显示一条消息来添加密钥,但从不询问密码......文件未被复制...和连接没有关闭。
* keychain 2.7.1 ~ http://www.funtoo.org
* Waiting 5 seconds for lock...
* Found existing ssh-agent: 31914
* Adding 1 ssh key(s): /root/.ssh/id_rsa
使用SSH,如果未加载密钥,则会正确显示密码短语提示:
* keychain 2.7.1 ~ http://www.funtoo.org
* Found existing ssh-agent: 27551
* Adding 1 ssh key(s): /root/.ssh/id_rsa
Enter passphrase for /root/.ssh/id_rsa:
是否有方法/解决方法来检测文件是否已被复制? 事实上,根本原因是遥远的.bashrc我认为... Keybin是在.bashrc来源时启动的。
编辑:钥匙串有--noask
选项。因此,SCP命令可以使用此选项,因为不会询问密码,但我确实需要通过SSH询问密钥。
在目标服务器上,是否可以检测是否启动了ssh OR scp命令?
答案 0 :(得分:0)
假设您已控制远程系统上的.bashrc文件,为什么不根据会话是否为tty
来改变启动钥匙串的方式?这样你可以使用--noask
选项启动它,就像你在使用scp(no tty)时所描述的那样,没有ssh的选项。
if [ -t 1 ] then
<start keychain normally>
else
<start keychain with --noask>
fi