Önceki tüm yanıtlara ek olarak, SSH anahtarlarına dayanan, o anahtarla oturum açıldığında neler yapılabileceğine dair kısıtlamalar içeren bir yanıt.
A sunucusunda
Bu konuda, ayrı bir kullanıcı oluşturursanız veya mevcut kullanıcı adlarınızdan birini kullanırsanız daha az önemlidir, ancak ben olsaydım ayrı bir kullanıcı oluştururdum. bkpuser
Aşağıdaki örneklerde her iki sunucu için kullanıcı adını kullanacağım .
Giriş yaptığınızda bkpuser
, şifresiz bir SSH anahtarı oluşturun.
B sunucusunda
Etkin PubkeyAuthentication
içinde sshd_config
.
Kullanıcıyı oluşturun bkpuser
. Çok karmaşık bir şifre belirleyin veya bu kullanıcı için şifre girişini devre dışı bırakın (tam olarak bunu nasıl yaptığınız, hangi unix ve distro'ya bağlı olduğunuza bağlıdır). Mesele şu ki, kullanıcı yalnızca bir SSH anahtarıyla oturum açmalıdır. bkpuser
Yedeklemek istediğiniz tüm dizinlere ve dosyalara okuma erişimi olduğundan emin olun .
A'da oluşturulan anahtarın ortak kısmını ~bkpuser/.ssh/authorized_keys
B'ye kopyalayın . Bağlantıda bir komutu otomatik olarak çalıştırmak için. Bu komut bir kabuk betiğine işaretçi olmamalıdır; bunun yerine kabuk komut dosyasını doğrudan anahtarın içine ekleyin. Ayrıca, anahtarın yalnızca A sunucusundan kullanılabilmesi ve başka hiçbir sunucunun kullanılmaması için bir sınırlama ekleyin. Aşağıdaki örnekte, sunucu A'ya IP adresini veriyorum 10.1.2.3
ve yedeklemek istediğim dosyaların hepsinin altında olduğunu varsayıyorum /data
.
from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cd /data;/usr/bin/tar -cf - *; /usr/bin/logger -t BACKUP -p daemon.info \"INFO: Backup-files on $HOST fetched from ${SSH_CLIENT%% *} by $USER\";" ssh-dss AA.....
A sunucusunda
@reboot
Girişleri destekleyen cron sekmelerinden birini kullanıyorsanız , böyle bir girişi bkpuser
komutla s crontab'a ekleyin ssh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
. Bunlara izin vermezse, istediğiniz zaman ayarlayın - verilerim olsaydı, muhtemelen her gün yaparım.