Итак, я установил для сервера SSH-вход без пароля. Я могу запустить rsync из командной строки, он отлично работает и не запрашивает у меня пароль:
rsync -avz -e ssh myDir user@X.X.X.X:/place/myDir
Однако, когда я помещаю это в сценарий bash и выполняю его, он перестает запрашивать у меня пароль.
#!/bin/bash
rsync -avz -e ssh myDir user@X.X.X.X:/place/myDir
Почему это происходит? Что мне следует искать, чтобы это остановить?
Возможно, вам потребуется добавить путь к вашему файлу удостоверения следующим образом:
rsync -avz -e "ssh -i /home/user/.ssh/id_rsa" myDir user@X.X.X.X:/place/myDir
Вам необходимо установить свой ssh-агент. Я использую для этого брелок.
Мне нравится настраивать конфигурации ssh в файле конфигурации - ~ / .ssh / config
Это выглядит так
Host xxx-master
HostName X.X.X.X
User user
IdentityFile ~/.ssh/xxx_id_rsa
ControlMaster yes
ControlPath ~/.ssh/xxx_ctrl_path
Host xxx
HostName X.X.X.X
User user
ControlPath ~/.ssh/xxx_ctrl_path
Затем я ssh xxx-master
и он запрашивает у меня кодовую фразу. Пока я продолжаю входить в xxx-master, я могу ssh xxx
без парольной фразы.
Это лучше, чем ssh agent? Я не знаю. Я использую этот метод, потому что еще не разобрался с ssh-agent.