Почему требуется аутентификация с помощью открытого ключа SSH по ключевой фразе снова после 2k сеансов?

Я недавно начал замену моего резервного хранилища. Mac Mini с WD MyBook заменяется на Synology DiskStation. Один из сценариев резервного копирования, который я использовал для синхронизации моего внешнего жесткого диска с виртуальными машинами, перестал работать должным образом после перемещения места назначения резервного копирования в Synology. Сценарий в основном запускает процесс rsync в сеансе SSH для каждого файла. Подробности сценария можно найти здесь; http://www.reddipped.com/2016/07/speeding-vm-backups-using-rsync/

Чтобы иметь возможность запускать сценарий без необходимости вводить пароль для каждого сеанса SSH, была настроена аутентификация с открытым ключом.

Конфигурация клиента (Mac OS X Sierra)

  • Создать приватную / публичную пару ключей
    ssh-keygen -t rsa -f ~/.ssh/id_rsa -C "rsync"
  • Введите случайную фразу-пароль, например, "протокол rsync"

  • Скопируйте открытый ключ в домашний каталог пользователей в синологии

    ssh Peter\ van\ Nes@newyork 'mkdir ~/.ssh'
    cat ~/.ssh/id_rsa.pub | ssh Peter\ van\ Nes@newyork 'cat - >> ~/.ssh/authorized_keys'
    ssh Peter\ van\ Nes@newyork 'chmod 644 .ssh/authorized_keys'
    ssh Peter\ van\ Nes@newyork 'chmod 755 ~ ~/.ssh' 
    

Сервер (Synology)

  • Открыть сессию SSH в Synology

    ssh "Peter van Nes"@newyork
    
  • Изменить sshd_config

    vi /etc/ssh/sshd_config   
    # Enable RSAAuthentication yes     
    # Enable PubkeyAuthentication yes
    # Enable AuthorizedKeysFile .ssh/authorized_keys
    # Enable ChallengeResponseAuthentication yes
    # Add MaxSessions 50
    # Add MaxStartups 50:10:100
    
  • Перезапустите сервисы

    # restart ssh-shell
    synoservicectl --restart ssh-shell
    # restart rsync daemon
    synoservicectl --restart rsyncd   
    

После выполнения этих шагов я могу войти в систему с помощью открытого ключа. При запуске скрипта он изначально запускается, как и ожидалось, только после нескольких тысяч файлов необходимо повторно ввести ключевую фразу для ключа.

Я разбил проблему на этот маленький сценарий, который воспроизводит проблему для меня.

#!/bin/bash

sessions=0
while true
do
    sessions=$(($sessions + 1))
    echo "Session " $sessions
    ssh peter@newyork -x "ls -al"
done 

После нескольких тысяч последовательных сессий SSH снова запрашивается фраза для открытого ключа. Последовательное успешное количество сеансов отличается за один прогон. Это может быть 2102, но и 5000+.

Session  2101
total 4
drwxr-xr-x  1 peter users   24 Oct 15 12:46 .
drwxrwxrwx+ 1 root  root    92 Oct 16 22:29 ..
drwxr-xr-x  1 peter users   30 Oct 15 12:46 .ssh
-rwxrwxrwx+ 1 peter users 1239 Oct 15 12:46 .viminfo
Session  2102
total 4
drwxr-xr-x  1 peter users   24 Oct 15 12:46 .
drwxrwxrwx+ 1 root  root    92 Oct 16 22:29 ..
drwxr-xr-x  1 peter users   30 Oct 15 12:46 .ssh
-rwxrwxrwx+ 1 peter users 1239 Oct 15 12:46 .viminfo
Session  2103
Enter passphrase for key '/Users/petervannes/.ssh/id_rsa': 

Когда ssh с аргументом -vvv не дает никаких подсказок, auth.log в Synology также сообщает об ошибках аутентификации.

Любая идея, как отладить или исправить это?

1 ответ

Исправлено путем добавления сертификатов в связку ключей с помощью ssh-add -K,

#!/bin/bash

sessions=0

ssh-add -K

while true
do
    sessions=$(($sessions + 1))
    echo "Session " $sessions
    ssh peter@newyork -x "ls -al"
done 
Другие вопросы по тегам