我可以ssh user@remotemachine
使用密钥对和空密码来不输入密码。但是,当我这样做时,sudo -u user ssh user@remotemachine
它一直要求输入密码。也sudo -u user ssh -i /home/user/.ssh/id_rsa user@remotemachine
没有帮助。这是为什么?
背景:我正在以 sudo 身份运行 python 脚本,并且我需要从该脚本以用户身份 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':
答案1
好吧,这是我自己的错。密钥实际上是加密的,我在文本编辑器中打开它时可以看到。没有 sudo 时没有要求我输入密码,是因为我在登录时已经输入了密码(我猜是某个 gnome 实用程序缓存了它),但由于运行时间太长而忘记了它 :)
我猜,使用 sudo 我无法访问这个缓存的密码。
要解密私钥,您可以使用openssl rsa -in id_rsa -out id_rsa.decr
,然后rm id_rsa
,接着mv id_rsa.decr id_rsa
。