钥匙串程序的 SCP 问题

Scp issue with Keychain program

在我的 Bash 脚本中,我使用 SCP 将一些文件复制到另一台机器。

但我在所有主机上都使用钥匙串程序。 当 ssh-agent 已经被 Keychain 加载时,就没有问题了。

但是,当远程主机的密钥尚未加载时,连接后,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:

有没有way/workaround检测文件是否被复制?
事实上,根本原因是遥远的 .bashrc 我认为......钥匙串是在 .bashrc 被获取时启动的。

编辑:钥匙串有一个 --noask 选项。所以 SCP 命令适用于此选项,因为没有询问密码,但我确实需要询问有关 SSH 密钥的信息。

在目标服务器上,是否可以检测是否启动了 ssh 或 scp 命令?

假设您可以控制远程系统上的 .bashrc 文件,为什么不根据会话是否为 tty 来更改启动钥匙串的方式呢?这样您就可以使用 --noask 选项启动它,正如您在使用 scp(无 tty)时所描述的那样,而没有 ssh 的该选项。

if [ -t 1 ] then
  <start keychain normally>
else
  <start keychain with --noask>
fi