Вызываю скрипт из cron job. В сценарии необходимо выполнить команды CVS для обновления из удаленного репозитория. Для этого ему необходимо пройти аутентификацию по SSH.
Я поместил в скрипт следующий код
...
ROOTPATH="/Users/qazwsx/project/"
cd $ROOTPATH
SSHAGENT="${ROOTPATH}ssh-agent.cf"
if [ -f "$SSHAGENT" ]; then
rm "$SSHAGENT"
fi
ssh-agent -s | head -n 2 > "$SSHAGENT"
if [ -f "$SSHAGENT" ]; then
echo "$SSHAGENT"
source "$SSHAGENT"
ssh-add
#function killsshagent {
# /bin/kill $SSH_AGENT_PID
#}
#trap killsshagent EXIT
rm "$SSHAGENT"
fi
...
Но когда сценарий запускается, появляется следующее окно:
и я НЕ мог ничего вводить в поле ввода. Таким образом, шаги после аутентификации SSH не были выполнены успешно, потому что доступ SSH не был установлен. Мне интересно, что мне делать, чтобы обновить CVS в задании cron.
Вы можете создать еще одну пару ключей без ключевой фразы:
$ ssh-keygen -t rsa -b 4096 -f ~ / .ssh / cvs_rsa.id
Затем добавьте содержимое ~ / .ssh / cvs_rsa.id.pub в authorized_keys на удаленном хосте. После этого вы должны иметь возможность «ssh -i ~ / .ssh / cvs_rsa.id user @ remotehost» из вашего скрипта.
Обратите внимание, что при создании ключа без ключевой фразы любой, у кого есть файл закрытого ключа, сможет войти в систему как вы. Используйте с осторожностью!
Обновление: со страницы руководства ssh-keygen (1):
ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-f output_keyfile]
-b bits
Specifies the number of bits in the key to create. For RSA keys, the minimum size is 768 bits and the default is 2048 bits. Generally, 2048 bits is considered sufficient. DSA keys must be exactly 1024 bits as speci‐
fied by FIPS 186-2. For ECDSA keys, the -b flag determines the key length by selecting from one of three elliptic curve sizes: 256, 384 or 521 bits. Attempting to use bit lengths other than these three values for
ECDSA keys will fail.
-t type
Specifies the type of key to create. The possible values are “rsa1” for protocol version 1 and “dsa”, “ecdsa” or “rsa” for protocol version 2.
Итак, по сути, команда говорит: создайте 4096-битный ключ RSA и сохраните его как cvs_rsa.id в каталоге .ssh в домашнем каталоге текущего пользователя. ~ / .ssh / расширяется до $ HOME / .ssh / для любого установленного значения $ HOME.