systemctl 服务和 ssh
systemclt services and ssh
我有一个简单的 bash 脚本可以调用 git 集线器上的 git 存储库 (/home/user/simple_git.sh):
#!/bin/bash
# Change to the Git repoistory
cd /home/user/git/a_git_repo
remote=$(
git ls-remote -h origin master |
awk '{print }'
)
local=$(
git rev-parse HEAD
)
printf "Local : %s\nRemote: %s\n" $local $remote
它给出以下输出:
Local : a10dc1d7d30ed67ed1e514a3c1ffc5a824cea14b
Remote: a10dc1d7d30ed67ed1e514a3c1ffc5a824cea14b
git 身份验证是通过 ssh 密钥完成的 - 以下是我的 .bashrc
# ssh
eval `ssh-agent -s`
ssh-add
脚本 运行 与用户以及 sudo(通过保留用户环境)一样都很好,即。
~/.simple_git.sh
or
sudo -E ~/simple_git.sh
但是,我还没有找到将脚本作为服务运行的方法(/etc/systemd/user/simple_git.service 或 /etc/systemd/system/simple_git.service)
[Unit]
Description=TestScript
[Service]
Type=simple
ExecStart=/home/user/simple_git.sh
我已经尝试 运行使用 --user 选项连接 systemctl 命令以及修改 visudo 以包含行
Defaults env_keep += SSH_AUTH_SOCK
但无济于事。每次我查看工作状态时:
Feb 21 23:16:00 alarmpi systemd[484]: Started TestScript.
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: Permission denied (publickey).
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: fatal: Could not read from remote repository.
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: Please make sure you have the correct access rights
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: and the repository exists.
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: Local : a10dc1d7d30ed67ed1e514a3c1ffc5a824cea14b
Systemd 不是 运行 带有您会话中的环境变量的服务。我会推荐你
- 使用 git 使用
https
,不需要身份验证(而不是 ssh
)
- 创建一个未受保护的 "deploy key",它将位于标准位置 (
~alarmpi/.ssh/id_rsa
),git
将在没有 ssh-agent
的情况下自动拾取它。
目前(工作实践政策)无法使用 https 连接到 github。虽然不受保护的部署密钥的想法很有用,但我最终使用 systemctl --user import-environment (wiki.archlinux.org/index.php/Systemd/User) 来解决这个问题。
我有一个简单的 bash 脚本可以调用 git 集线器上的 git 存储库 (/home/user/simple_git.sh):
#!/bin/bash
# Change to the Git repoistory
cd /home/user/git/a_git_repo
remote=$(
git ls-remote -h origin master |
awk '{print }'
)
local=$(
git rev-parse HEAD
)
printf "Local : %s\nRemote: %s\n" $local $remote
它给出以下输出:
Local : a10dc1d7d30ed67ed1e514a3c1ffc5a824cea14b
Remote: a10dc1d7d30ed67ed1e514a3c1ffc5a824cea14b
git 身份验证是通过 ssh 密钥完成的 - 以下是我的 .bashrc
# ssh
eval `ssh-agent -s`
ssh-add
脚本 运行 与用户以及 sudo(通过保留用户环境)一样都很好,即。
~/.simple_git.sh
or
sudo -E ~/simple_git.sh
但是,我还没有找到将脚本作为服务运行的方法(/etc/systemd/user/simple_git.service 或 /etc/systemd/system/simple_git.service)
[Unit]
Description=TestScript
[Service]
Type=simple
ExecStart=/home/user/simple_git.sh
我已经尝试 运行使用 --user 选项连接 systemctl 命令以及修改 visudo 以包含行
Defaults env_keep += SSH_AUTH_SOCK
但无济于事。每次我查看工作状态时:
Feb 21 23:16:00 alarmpi systemd[484]: Started TestScript.
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: Permission denied (publickey).
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: fatal: Could not read from remote repository.
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: Please make sure you have the correct access rights
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: and the repository exists.
Feb 21 23:16:01 alarmpi simple_git.sh[15255]: Local : a10dc1d7d30ed67ed1e514a3c1ffc5a824cea14b
Systemd 不是 运行 带有您会话中的环境变量的服务。我会推荐你
- 使用 git 使用
https
,不需要身份验证(而不是ssh
) - 创建一个未受保护的 "deploy key",它将位于标准位置 (
~alarmpi/.ssh/id_rsa
),git
将在没有ssh-agent
的情况下自动拾取它。
目前(工作实践政策)无法使用 https 连接到 github。虽然不受保护的部署密钥的想法很有用,但我最终使用 systemctl --user import-environment (wiki.archlinux.org/index.php/Systemd/User) 来解决这个问题。