使用 ssh-add 添加 ssh 密钥时滥用 shell 内置函数
Misuse of shell builtins when adding an ssh key using ssh-add
我有一个 script.sh
文件,用于检查加载的 SSH 代理并添加一个密钥。
如果我直接 运行 这个脚本,它可以工作,但是如果我 运行 通过一些工作人员,它不会,除非我做这些更改:
这个有效:
#!/bin/bash -e
printf "<<<<< Start SSH agent and Github deploy key >>>>>\n"
if ps -p $SSH_AGENT_PID > /dev/null
then
printf "<<<<< ssh-agent is already running >>>>>\n"
else
eval `ssh-agent -s`
fi
ssh-add $deploy_key_path
但他的不起作用:
#!/bin/bash -e
if [ $(ps ax | grep [s]sh-agent | wc -l) -gt 0 ] ; then
printf "<<<<< ssh-agent is already running >>>>>\n"
else
eval `ssh-agent -s`
fi
ssh-add $deploy_key_path
错误显示 ...failed. Exit Code: 2(Misuse of shell builtins)..
发生在行 ssh-add $deploy_key_path
检查 reserved Bash error codes 时,我看到:
2 Misuse of shell builtins empty_function() {} Missing keyword or command
这是我使用 ssh-agent
和 ssh-add
的一种合理方式,通过不让密钥解锁超过脚本中严格需要的时间来最大限度地降低安全风险。
#!/usr/bin/env sh
# Do not leave key unlocked after execution of this script
trap 'ssh-add -d "$deploy_key_path"' EXIT INT
# If ssh-agent has an auth socket or has a PID
if [ -S "$SSH_AUTH_SOCK" ] || ps -p "$SSH_AGENT_PID" >/dev/null 2>&1; then
printf '<<<<< ssh-agent is already running >>>>>\n'
else
# Do not use back-ticks as it is legacy obsolete
eval "$(ssh-agent -s)"
fi
# Do not leave key unlocked more than 5 minutes
ssh-add -t 600 "$deploy_key_path"
我有一个 script.sh
文件,用于检查加载的 SSH 代理并添加一个密钥。
如果我直接 运行 这个脚本,它可以工作,但是如果我 运行 通过一些工作人员,它不会,除非我做这些更改:
这个有效:
#!/bin/bash -e
printf "<<<<< Start SSH agent and Github deploy key >>>>>\n"
if ps -p $SSH_AGENT_PID > /dev/null
then
printf "<<<<< ssh-agent is already running >>>>>\n"
else
eval `ssh-agent -s`
fi
ssh-add $deploy_key_path
但他的不起作用:
#!/bin/bash -e
if [ $(ps ax | grep [s]sh-agent | wc -l) -gt 0 ] ; then
printf "<<<<< ssh-agent is already running >>>>>\n"
else
eval `ssh-agent -s`
fi
ssh-add $deploy_key_path
错误显示 ...failed. Exit Code: 2(Misuse of shell builtins)..
发生在行 ssh-add $deploy_key_path
检查 reserved Bash error codes 时,我看到:
2 Misuse of shell builtins empty_function() {} Missing keyword or command
这是我使用 ssh-agent
和 ssh-add
的一种合理方式,通过不让密钥解锁超过脚本中严格需要的时间来最大限度地降低安全风险。
#!/usr/bin/env sh
# Do not leave key unlocked after execution of this script
trap 'ssh-add -d "$deploy_key_path"' EXIT INT
# If ssh-agent has an auth socket or has a PID
if [ -S "$SSH_AUTH_SOCK" ] || ps -p "$SSH_AGENT_PID" >/dev/null 2>&1; then
printf '<<<<< ssh-agent is already running >>>>>\n'
else
# Do not use back-ticks as it is legacy obsolete
eval "$(ssh-agent -s)"
fi
# Do not leave key unlocked more than 5 minutes
ssh-add -t 600 "$deploy_key_path"