我最近开始更换我的备份存储。带有 WD MyBook 的 Mac Mini 正在被 Synology DiskStation 取代。在将备份目标重新定位到 Synology 后,我一直用于将外部 HDD 与 VM 同步的备份脚本中停止正常工作。该脚本基本上在每个文件的 SSH 会话中启动 rsync 进程。可以在此处找到脚本的详细信息;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 协议”
将公钥复制到 Synology 上的用户主目录
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 会话
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':
当使用 -vvv 参数运行 ssh 时不会给出任何提示,Synology 上的 auth.log 也会报告任何身份验证错误。
知道如何调试或解决这个问题吗?