Как автоматически выполнять аутентификацию 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.

1 ответ

Решение

Вы можете создать другую пару ключей без ключевой фразы:

$ ssh-keygen -t rsa -b 4096 -f ~ /.ssh / cvs_rsa.id

Затем добавьте содержимое ~/.ssh/cvs_rsa.id.pub к авторизованным ключам на удаленном хосте. После этого вы сможете "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.

Другие вопросы по тегам