fangpsh's blog

echo 输出导致SCP 失效的问题

搭建了一个跳板机,强制使用密钥对登陆机器,同时需要用户在本地开启ForwardAgent,跳板机上创建SSH_AUTH_SOCK,透传私钥。然而常常有用户在本地没有正确配置,导致上了跳板机之后,再SSH 就会失败,于是我在跳板机的.bashrc 上写了一段检测脚本,如果变量$SSH_AUTH_SOCK 不存在,就引导用户去看Wiki,不要烦我啦!

用了一段时间,有用户发现scp 文件到跳板机时会失败,Google 一下:SCP doesn't work when echo in .bashrc?,怎么判断当前会话是scp?:Can I tell if I'm in an scp session in my .bashrc?

改下脚本:

if [ -n "$PS1" ] && [ -z $SSH_AUTH_SOCK ];then
   echo ""
   echo "创建SSH_AUTH_SOCK 失败!"
   echo "1.请在本机执行 ssh-add 添加私钥至 ssh-agent"
   echo "2.请在~/.ssh/config 配置:ForwardAgent yes"
   echo "详细帮助:wiki..."
   echo ""
fi

搞定!