Назад | Перейти на главную страницу

Как сделать SSH-аутентификацию и обновление CVS автоматически из задания cron?

Вызываю скрипт из 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.