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