У меня есть сервер Ubuntu с пользователями: ubuntu
и user
Я подключаюсь к каждому из пользователей, используя ssh -A
(чтобы передать ключи моей локальной машины в SSH). Из любой пользователей, которых я могу подключиться к SSH-серверу Github:
$ ssh -T git@github.com
...
Hi gabipetrovay! You've successfully authenticated, but GitHub does not provide shell access.
Но когда я пытаюсь подключиться из ubuntu
с помощью sudo
, от имени user
sudo -E -u user ssh -T git@github.com
Я получаю Permission denied (publickey)
ошибка.
Используя -vv
вариант для ssh
Я вижу, что при запуске с sudo от имени user
из ubuntu
ключ на моей машине не предлагается серверу ssh. Для сравнения:
непосредственно форма user
:
debug2: key: /Users/gabriel/.ssh/id_rsa (0x7fbf09390020),
debug2: key: /home/mono/.ssh/id_rsa ((nil)),
debug2: key: /home/mono/.ssh/id_dsa ((nil)),
debug2: key: /home/mono/.ssh/id_ecdsa ((nil)),
debug2: key: /home/mono/.ssh/id_ed25519 ((nil)),
из ubuntu
с помощью sudo -u user
:
debug2: key: /home/mono/.ssh/id_rsa ((nil)),
debug2: key: /home/mono/.ssh/id_dsa ((nil)),
debug2: key: /home/mono/.ssh/id_ecdsa ((nil)),
debug2: key: /home/mono/.ssh/id_ed25519 ((nil)),
Так кажется, что через sudo
сокет SSH_AUTH_SOCK не рассматривается.
Я также добавил Defaults env_keep+=SSH_AUTH_SOCK
к /etc/sudoers
но это все равно не работает.
Как я могу этого добиться? Мне нужно выполнить ssh
и git
команды от пользователя ubuntu
от имени user
пользователь.
Помимо добавления Defaults env_keep+=SSH_AUTH_SOCK
к sudoers
, вам также необходимо предоставить user
доступ к файлу, указанному переменной SSH_AUTH_SOCK. По умолчанию он не включен.