ssh-agent ssh-add ok in user not in sudo

马蒂厄马蒂厄

我创建了一个SSH代理,以在连接到服务器时将我的密钥提供给ssh / scp cmd。我还用命令“ expect”编写了一个SSH-Add脚本,以便在需要时编写我的解释。

这与我的用户“ user”完美配合。

但是我正在执行一个使用/ dev / mem的python脚本,该脚本需要通过sudo以root身份运行。这个python脚本调用另一个内部包含ssh和scp cmd的bash脚本。因此,所有这些cmd均以root用户身份执行,而我的agent / ssh-add不再起作用,并不断要求为每个文件提供释义。

我该如何解决?我不想以root用户身份登录并以root用户身份运行代理。我尝试了sudo -u用户ssh,但是它不起作用(即:需要输入我的解释)

有任何想法吗?

在此先感谢Mat

编辑:我的代码:需要sudo的py脚本

#!/usr/bin/env python2.7
import RPi.GPIO as GPIO
import time
import subprocess
from subprocess import call
from datetime import datetime
import picamera
import os
import sys
GPIO.setmode(GPIO.BCM)
# GPIO 23 set up as input. It is pulled up to stop false signals
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#set path and time to create the folder where the images will be saved
pathtoscript = "/home/pi/python-scripts"

current_time = time.localtime()[0:6]
dirfmt = "%4d-%02d-%02d-%02d-%02d-%02d"
dirpath = os.path.join(pathtoscript , dirfmt)
localdirname = dirpath % current_time[0:6] #dirname created with date and time
remotedirname = dirfmt % current_time[0:6] #remote-dirname created with date and time
os.mkdir(localdirname) #mkdir
pictureName = localdirname + "/image%02d.jpg" #path+name of pictures
var = 1
while var == 1:
    try:
            GPIO.wait_for_edge(23, GPIO.FALLING)
            with picamera.PiCamera() as camera:
                    #camera.capture_sequence(["/home/pi/python-scripts/'dirname'/image%02d.jpg" % i for i in range(2)])
                    camera.capture_sequence([pictureName % i for i in range(19)])
                    camera.close()
                    cmd = '/home/pi/python-scripts/picturesToServer {0}  &'.format(remotedirname)
                    call ([cmd], shell=True)
    except KeyboardInterrupt:
            GPIO.cleanup()       # clean up GPIO on CTRL+C exit
GPIO.cleanup()           # clean up GPIO on normal exit

bash脚本:

#!/bin/bash
cd $1
ssh user@server mkdir /home/repulsion/picsToAnimate/"$1" >/dev/null 2>&1
ssh user@server cp "$1"/* /home/repulsion/picsToAnimate/"$1"/ >/dev/null 2>&1
for i in $( ls ); do
    scp $i user@server:/home/repulsion/picsToAnimate/"$1"/  >/dev/null 2>&1
done
布莱恩·坎贝尔

您将需要通过sudo传递SSH代理环境变量。

为此,您可以运行sudo -E通过sudo传递所有环境变量。但这可能很危险,因此最好只传递所需的内容。最简单的方法是使用适当的环境变量集sudo调用env来调用给定程序:

$ sudo env SSH_AGENT_PID=$SSH_AGENT_PID SSH_AUTH_SOCK=$SSH_AUTH_SOCK my-script

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pam_ssh_agent_auth:sudo 要求使用 ssh user@host 输入密码,但 ssh user@host 'bash' 不是

来自分类Dev

没有ssh-agent的Ubuntu 16.04 ssh-add?

来自分类Dev

成功联系ssh-agent后,PAM无法验证sudo

来自分类Dev

ssh忽略ssh-agent

来自分类Dev

如何与ssh-agent + ssh-add一起使用gpg-agent?

来自分类Dev

如果密钥不在ssh-agent中,则在ssh / slogin上执行ssh-add吗?

来自分类Dev

如果密钥不在ssh-agent中,则在ssh / slogin上执行ssh-add吗?

来自分类Dev

ssh-add和ssh-agent有什么区别?

来自分类Dev

如何通过SH脚本运行ssh-agent和ssh-add?

来自分类Dev

ssh-add命令不会将我的身份添加到ssh-agent

来自分类Dev

ssh-add命令不会将我的身份添加到ssh-agent

来自分类Dev

ssh-agent / ssh-add错误:无法打开与身份验证代理的连接

来自分类Dev

ssh-agent / ssh-add-默认情况下如何强制确认?

来自分类Dev

什么是“ ssh-agent bin / bash”,为什么每次都要“ ssh-add”

来自分类Dev

gpg-agent拒绝带有ssh-add的SSH密钥,报告“代理拒绝操作”

来自分类Dev

如何列出通过ssh-add添加到ssh-agent的密钥?

来自分类Dev

如果从.xsessionrc启动,xautolock / ssh-add无法与ssh-agent进行交互

来自分类Dev

无法使用eval $(ssh-agent)&& ssh-add在同一会话中存储密码

来自分类Dev

如何让 ssh-add 使用 Microsoft 的 OpenSSH 识别正在运行的 ssh-agent 服务?

来自分类Dev

SSH:执行sudo命令

来自分类Dev

使用sudo的ssh配置

来自分类Dev

sudo然后ssh的别名

来自分类Dev

管道 ssh sudo 的输出

来自分类Dev

引用ssh $ host $ FOO和ssh $ host“ sudo su user -c $ FOO”类型的构造

来自分类Dev

集成PHP,SSH和ssh-agent

来自分类Dev

ssh是否使用ssh-agent?

来自分类Dev

gpg-agent代替ssh-agent

来自分类Dev

sudoing ssh的问题-sudo ssh ...失败

来自分类Dev

如何找出gpg-agent已缓存的键?(例如ssh-add -l如何显示您缓存的ssh密钥)

Related 相关文章

  1. 1

    pam_ssh_agent_auth:sudo 要求使用 ssh user@host 输入密码,但 ssh user@host 'bash' 不是

  2. 2

    没有ssh-agent的Ubuntu 16.04 ssh-add?

  3. 3

    成功联系ssh-agent后,PAM无法验证sudo

  4. 4

    ssh忽略ssh-agent

  5. 5

    如何与ssh-agent + ssh-add一起使用gpg-agent?

  6. 6

    如果密钥不在ssh-agent中,则在ssh / slogin上执行ssh-add吗?

  7. 7

    如果密钥不在ssh-agent中,则在ssh / slogin上执行ssh-add吗?

  8. 8

    ssh-add和ssh-agent有什么区别?

  9. 9

    如何通过SH脚本运行ssh-agent和ssh-add?

  10. 10

    ssh-add命令不会将我的身份添加到ssh-agent

  11. 11

    ssh-add命令不会将我的身份添加到ssh-agent

  12. 12

    ssh-agent / ssh-add错误:无法打开与身份验证代理的连接

  13. 13

    ssh-agent / ssh-add-默认情况下如何强制确认?

  14. 14

    什么是“ ssh-agent bin / bash”,为什么每次都要“ ssh-add”

  15. 15

    gpg-agent拒绝带有ssh-add的SSH密钥,报告“代理拒绝操作”

  16. 16

    如何列出通过ssh-add添加到ssh-agent的密钥?

  17. 17

    如果从.xsessionrc启动,xautolock / ssh-add无法与ssh-agent进行交互

  18. 18

    无法使用eval $(ssh-agent)&& ssh-add在同一会话中存储密码

  19. 19

    如何让 ssh-add 使用 Microsoft 的 OpenSSH 识别正在运行的 ssh-agent 服务?

  20. 20

    SSH:执行sudo命令

  21. 21

    使用sudo的ssh配置

  22. 22

    sudo然后ssh的别名

  23. 23

    管道 ssh sudo 的输出

  24. 24

    引用ssh $ host $ FOO和ssh $ host“ sudo su user -c $ FOO”类型的构造

  25. 25

    集成PHP,SSH和ssh-agent

  26. 26

    ssh是否使用ssh-agent?

  27. 27

    gpg-agent代替ssh-agent

  28. 28

    sudoing ssh的问题-sudo ssh ...失败

  29. 29

    如何找出gpg-agent已缓存的键?(例如ssh-add -l如何显示您缓存的ssh密钥)

热门标签

归档