я смогу ssh user@remotemachine
без пароля с помощью пары ключей с пустой парольной фразой. Тем не менее, когда я делаю sudo -u user ssh user@remotemachine
он постоянно просит пароль. Также sudo -u user ssh -i /home/user/.ssh/id_rsa user@remotemachine
не помогает Это почему?
Предыстория: я запускаю скрипт на python как sudo, и из этого скрипта мне нужно ssh для удаленной машины как пользователь.
Любая помощь приветствуется!
РЕДАКТИРОВАТЬ
В ответ на комментарий я повторил попытку с опцией -vv. Все выглядит хорошо, ключ найден, отправлен на сервер и принят. Однако тогда идут следующие строки:
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp <here was the fingerprint>
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/home/user/.ssh/id_rsa':
-vv
вариант вашей команды SSH. Я думаю, вы отказываетесь использовать ваш ключ или по какой-то причине не можете его найти. Который должен быть упомянут в подробном выводе.Ответы:
Хорошо, это была моя вина. Ключ был фактически зашифрован, как я мог видеть, открыв его в текстовом редакторе. Тот факт, что без sudo меня не спрашивали о парольной фразе, был вызван тем, что я уже ввел парольную фразу при входе в систему (я полагаю, что это кэширует какая-то утилита gnome) и забыл об этом из-за продолжительного времени работы :)
С sudo, я думаю, я не смог получить доступ к этому кешированному паролю
Чтобы расшифровать закрытый ключ, вы можете использовать
openssl rsa -in id_rsa -out id_rsa.decr
, затемrm id_rsa
, с последующимmv id_rsa.decr id_rsa
,источник