Предыстория:
- Я запускаю виртуальную машину Google Compute Engine под названием
host
. - На машине с именем
container
запущен контейнер Docker. - Я подключаюсь к виртуальной машине, используя учетную запись с именем
[email protected]
. - Мне нужно подключиться через
ssh
отcontainer
кhost
без запроса пароляuser
.
Проблема:
Через несколько минут после успешного подключения из контейнера к хосту user/.ssh/authorized_keys
«модифицируется» каким-то процессом самого Google. Насколько я понял, этот процесс добавляет некоторые ключи ssh, необходимые для подключения к виртуальной машине. Однако в моем случае процесс, кажется, перезаписывает ключ, который я сгенерировал из контейнера.
Настройка:
Я подключаюсь к host
с помощью графического интерфейса Google Compute Engine, нажимая кнопку SSH.
Затем я выполняю шаги, описанные в этом ответе на AskUbuntu. Я установил пароль для user
на host
:
user@host:~$ sudo passwd user
Я устанавливаю PasswordAuthentication
в yes
в sshd_config
и перезапускаю sshd
:
user@host:~$ sudo nano /etc/ssh/sshd_config
user@host:~$ sudo systemctl restart sshd
Вхожу в Docker-контейнер с помощью bash
, генерирую ключ и копирую его на хост:
user@host:~$ docker exec -it container /bin/bash
(base) root@container-id:# ssh-keygen
(base) root@container-id:# ssh-copy-id user@host
Ключ успешно скопирован на хост, хост добавлен в файл known_hosts
, и я могу подключиться из контейнера к хосту без запроса пароля (так как я дал его во время выполнения ssh-copy-id
).
Теперь, если я отключусь от хоста, подожду некоторое время и снова подключусь, я обнаружу, что файл user/.ssh/authorized_keys
содержит некоторые ключи, сгенерированные Google, но нет следов моего ключа (того, который позволяет контейнеру подключаться к хосту).
Что меня больше всего озадачивает, так это то, что мы постоянно использовали этот процесс раньше, и у нас никогда не было такой проблемы. У некоторых учетных записей на этом же хосте все еще есть ключи из контейнеров, которых больше не существует!
Кто-нибудь знает об этом поведении? Знаете ли вы о каких-либо решениях, которые позволяют мне хранить ключ столько времени, сколько это необходимо?