У меня почти такая же проблема, как и в этом вопросе, но на нее так и не ответили:
Я не использую Terraform, хотя. Просто NixOS + NixOps. Пока что я:
- Создал новую виртуальную машину на Vultr
- Выполнил стандартную установку NixOS из текущего образа (20.09 до чего-то), установив пароль root
- Включил ssh с аутентификацией по паролю root и сделал
nixos-rebuild switch
- Вручную сгенерировал пару ключей ssh на моем ноутбуке
ssh
вошел в виртуальную машину с паролем и добавил открытый ключ в/root/.ssh/authorized_keys
Теперь я могу подключиться к виртуальной машине по ssh вручную с новым ключом, как и ожидалось:
ssh -i .secrets/vultrtest1_rsa [email protected]
Прохладный. Затем я скопировал существующие файлы конфигурации NixOS на свой ноутбук и попытался подключить их к NixOps. Я попробовал минимальный test1.nix
, а также добавил разделы deployment."none"
и/или users.users.root.openssh
ниже.
vultrtest1
├── configuration.nix
└── hardware-configuration.nix
test1.nix
# test1.nix
{
network.description = "vultr test 1";
network.enableRollback = true;
vultrtest1 = { config, pkgs, ... } : {
deployment.targetHost = "XXX.XXX.XXX.XXX";
imports = [ ./vultrtest1/configuration.nix ];
# deployment.targetEnv = "none"; # existing nixos vm
# same result with or without this section:
deployment."none" = {
sshPrivateKey = builtins.readFile ./secrets/vultrtest1_rsa;
sshPublicKey = builtins.readFile ./secrets/vultrtest1_rsa.pub;
sshPublicKeyDeployed = true;
};
# same result with or without this:
users.users.root.openssh.authorizedKeys.keyFiles = [ ./secrets/vultrtest1_rsa.pub ];
};
}
Во всех случаях, когда я пытаюсь создать и развернуть сеть, NixOps пытается сгенерировать другой ключ SSH, а затем не может войти с ним:
$ nixops create test1.nix -d test1
created deployment ‘b4ac25fa-c842-11ea-9a84-00163e5e6c00’
b4ac25fa-c842-11ea-9a84-00163e5e6c00
$ nixops list
+--------------------------------------+-------+------------------------+------------+------+
| UUID | Name | Description | # Machines | Type |
+--------------------------------------+-------+------------------------+------------+------+
| b4ac25fa-c842-11ea-9a84-00163e5e6c00 | test1 | Unnamed NixOps network | 0 | |
+--------------------------------------+-------+------------------------+------------+------+
$ nixops deploy -d test1
vultrtest1> generating new SSH keypair... done
[email protected]: Permission denied (publickey,keyboard-interactive).
vultrtest1> could not connect to ‘[email protected]’, retrying in 1 seconds...
[email protected]: Permission denied (publickey,keyboard-interactive).
vultrtest1> could not connect to ‘[email protected]’, retrying in 2 seconds...
[email protected]: Permission denied (publickey,keyboard-interactive).
vultrtest1> could not connect to ‘[email protected]’, retrying in 4 seconds...
[email protected]: Permission denied (publickey,keyboard-interactive).
vultrtest1> could not connect to ‘[email protected]’, retrying in 8 seconds...
[email protected]: Permission denied (publickey,keyboard-interactive).
Traceback (most recent call last):
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/bin/..nixops-wrapped-wrapped", line 991, in <module>
args.op()
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/bin/..nixops-wrapped-wrapped", line 412, in op_deploy
max_concurrent_activate=args.max_concurrent_activate)
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/deployment.py", line 1063, in deploy
self.run_with_notify('deploy', lambda: self._deploy(**kwargs))
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/deployment.py", line 1052, in run_with_notify
f()
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/deployment.py", line 1063, in <lambda>
self.run_with_notify('deploy', lambda: self._deploy(**kwargs))
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/deployment.py", line 996, in _deploy
nixops.parallel.run_tasks(nr_workers=-1, tasks=self.active_resources.itervalues(), worker_fun=worker)
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/parallel.py", line 44, in thread_fun
result_queue.put((worker_fun(t), None, t.name))
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/deployment.py", line 979, in worker
os_release = r.run_command("cat /etc/os-release", capture_stdout=True)
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/backends/__init__.py", line 337, in run_command
return self.ssh.run_command(command, self.get_ssh_flags(), **kwargs)
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/ssh_util.py", line 280, in run_command
master = self.get_master(flags, timeout, user)
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/ssh_util.py", line 200, in get_master
compress=self._compress)
File "/nix/store/kybdy5m979h4kvswq2gx3la3rpw5cq5k-nixops-1.7/lib/python2.7/site-packages/nixops/ssh_util.py", line 57, in __init__
"‘{0}’".format(target)
nixops.ssh_util.SSHConnectionFailed: unable to start SSH master connection to ‘[email protected]’
Что мне не хватает? Возможно, я могу вручную добавить только что сгенерированный ключ NixOps?
Обновление: я использовал SQLiteBrowser для просмотра базы данных состояния NixOps и вставил сгенерированный открытый ключ в authorized_keys
. Теперь я могу ssh
ввести только что сгенерированный ключ вручную, но развертывание NixOps по-прежнему не удается.
~/.ssh/config
, так что не срочно. Вы все еще хотите их? Мне потребуется несколько минут, чтобы удалить файл.nixops
(с закрытыми ключами) из истории битбакета и сделать его общедоступным. - person jefdaj   schedule 18.07.2020