无法使用 ssh 密钥执行 sudo scp

无法使用 ssh 密钥执行 sudo scp

我需要运行一个脚本,其中包含一些必须以 root 身份运行的指令和一个 scp:

sbt assembly # requires sudo
scp -r -p myfile [email protected]:/root/spark/root # doesn't require sudo

我用 运行它sudo python3 ./myscript.py

另外,我将 ssh 配置为myserver使用 ssh 密钥进行通信:

Host [email protected]
    PubKeyAuthentication yes
    IdentityFile ~/.ssh/mykey
    IdentitiesOnly=yes
    PreferredAuthentications=publickey
    StrictHostKeyChecking=no

然后我在我的 shell 启动脚本中,在 ssh-agent 中注册了我的 ssh 密钥~/.zshrc

eval `ssh-agent`
ssh-add ~/.ssh/kiliba

请注意,我的公钥已有效注册myserver,并且我可以通过 ssh 或 scp 连接到该服务器,这意味着我的 ssh 配置有效,并且我的 ssh 密钥有效。

但是,当使用 sudo 运行此脚本时,scp 会不断要求我输入密码,这意味着我的 ssh 配置未被使用。我似乎已经做了让 scp 与 sudo 配合使用所需的一切,但我肯定遗漏了某些内容。请注意,奇怪的是,whilesudo scp不起作用,但确实sudo ssh起作用。

有趣的细节:在另一台机器上,我设法让它工作,但是我肯定是在一年前做的,我记不清我做了什么让它工作了。这是一台 Mac,我现在的机器上装的是 Ubuntu。

答案1

主机名应该只是服务器地址,而不是 uri。

[email protected]我应该写,而不是myserver.com,并在下面添加一条规则来指定用户名:

Host myserver.com
    User root
    PubKeyAuthentication yes
    IdentityFile ~/.ssh/mykey
    IdentitiesOnly=yes
    PreferredAuthentications=publickey
    StrictHostKeyChecking=no

相关内容