2015-07-09 6 views
1

В моем сценарии Bash я использую SCP для копирования некоторых файлов на другую машину.Проблема с scp с программой Keychain

Но я использую программу Keychain для всех моих хостов. Когда ssh-агент уже загружен 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: 

Есть ли способ/обходной путь, чтобы обнаружить, если файл был скопирован?
На самом деле, первопричиной является удаленный .bashrc, я думаю ... Брелок запускается при получении .bashrc.

Редактировать: Брелок имеет опцию --noask. Поэтому команда SCP работает с этой опцией, потому что кодовая фраза не задана, но мне действительно нужно спросить о ключе с SSH.

На сервере назначения можно определить, запущена ли команда ssh OR scp?

ответ

0

Предполагая, что у вас есть контроль над файлом .bashrc на удаленной системе, почему бы просто не изменить способ запуска keychain на основе того, является ли сеанс tty или нет? Таким образом, вы можете запустить его с помощью опции --noask, как вы описали, когда scp (no tty) используется, и без этой опции для ssh.

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

Ницца, он отлично работает :) – Isador

Смежные вопросы