У меня есть дроплет Digital Ocean (SERVER A), который использует SSH-ключ и пароль для моей учетной записи root. Я создал дополнительного пользователя и добавил его в новую группу SFTPUsers, следуя этому руководству:

https://www.digitalocean.com/community/questions/how-do-i-restrict-a-user-to-a-specific-directory

У меня также есть другой сервер на общем хосте (не на Digital Ocean), который имеет ночные файлы резервных копий. (СЕРВЕР B)

Я хотел бы безопасно каждую ночь защищенно копировать эти ночные резервные копии с сервера SERVER B в каталог на моем сервере DO (сервер A), к которому у моего пользователя резервного копирования есть доступ, и хотел бы сделать это с помощью сценария, чтобы он не запрашивал пароль, чтобы он мог просто работать. Я действительно не понимаю, куда идти отсюда. Я нахожу, что чем больше я исследую, тем больше смущаюсь. Я генерирую открытый / закрытый ключ на сервере SERVER B, а затем копирую открытый ключ на сервер A? Тогда что происходит?

Куда мне идти отсюда, чтобы иметь возможность SCP-файла с одного моего сервера на цифровой сервер Ocean? Я хотел бы сделать это, используя моего нового пользователя, которого я создал. Был бы очень рад любой помощи / указатели в правильном направлении. Я пытался читать по SSH / публичным / приватным ключам, но все еще не чувствую, что у меня прогресс :(

Спасибо!

1 ответ1

0

Нужно ли создавать другой ключ SSH для этого пользователя? Я хотел бы сделать это на сервере DO? Я даже не могу войти как этот новый пользователь, потому что он говорит, что доступ запрещен (открытый ключ), когда я пытаюсь войти. Однако я могу войти в систему как пользователь root, когда использую этот ключ.

Конечно, вы можете использовать один и тот же ключ для всего. Однако было бы лучше использовать разные ключи для разных пользователей. Поэтому я бы порекомендовал создать ключ для пользователя без полномочий root . (И, возможно, не вводите ключевую фразу, иначе вам придется понимать ssh-agent (см. Ниже).) Вы должны сгенерировать ключ на сервере DO, а затем добавить открытый ключ ... см. Следующий шаг.

Как я могу гарантировать, что дроплет разрешит доступ с этого другого сервера? Я прочитал, что вы можете скопировать открытый ключ, созданный на сервере DO, в .ssh dir общего сервера, а затем добавить его к авторизованному ключу. Это верно?

Вам не нужно копировать его в ~/.ssh . Вам просто нужно добавить его к authorized_keys ключу в каталоге ~/.ssh .

Даже если ключ будет скопирован, у него все равно будет пароль, который мне нужно будет ввести, не так ли? Куда это сохраняется? Переменная окружения?

Только если вы ввели парольную фразу, когда генерировали свой ключ. Вы можете хранить парольные фразы с помощью ssh-agent . Запуск ssh-agent запустит фоновый процесс, который позаботится о заполнении ключевой фразы, когда вы используете ssh (или scp и т.д.) На другом сервере, но только для ключей, которые у вас есть ssh-add ed. Это также выведет несколько строк, как это:

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-mjHm7nFyhJSh/agent.21838; export SSH_AUTH_SOCK;
SSH_AGENT_PID=21839; export SSH_AGENT_PID;
echo Agent pid 21839;

Это команды оболочки. Если вы вставите их в свою оболочку, вы сможете использовать ssh-agent в этой оболочке. Вы также можете сделать eval $(ssh-agent) для автоматической оценки вывода ssh-agent оболочкой. Затем вы делаете ssh-add (для ключа .ssh/id_rsa по умолчанию или ssh-add path/to/key и вводите ключевую фразу один раз. В этом терминале вы теперь сможете ssh к другим серверам без ввода ключевой фразы, даже если вы сгенерировали свой ключ с помощью ключевой фразы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .