【发布时间】:2020-06-18 13:18:45
【问题描述】:
我不知道为什么我在使用 SSH 运行我的脚本时遇到错误,但是当我从我的 CA 服务器运行 bash 时一切正常。
我根据这篇文章安装了我的VPN服务器https://www.digitalocean.com/community/tutorials/how-to-set-up-an-openvpn-server-on-ubuntu-18-04
我为创建 VPN 编写了一个 bash,但是当我尝试运行它时,我需要在某个时候通过 SSH 连接到另一台服务器。如果我在其中启动带有 SSH 的脚本,则会收到一条错误消息:
>./easyrsa: 341: set: Illegal option -o echo
我的 bash 包含这个并从我的 VPN 服务器运行:
sshpass -p $PASSWORD ssh username@"CA server IP" "/home/username/makevpn.sh $NAME $PASSWORD"
并且 makevpn.sh 包含这个:
>./easyrsa sign-req client $NAME
运行后似乎没问题,但在上面给出错误。
我在出现此错误后尝试阅读,但一无所获。 :( 希望有人能提供帮助,因为经过 4 天的故障排除,我已经绝望了。
VPN脚本代码
#!/bin/sh
clear
read -p "Please enter the name of the new certificate : " NAME
read -p "Please enter the Password : " PASSWORD
cd /home/username/EasyRSA-3.0.7/
./easyrsa gen-req $NAME nopass
echo "gen-req done"
cp /home/username/EasyRSA-3.0.7/pki/private/$NAME.key /home/username/client-configs/keys/
echo "cp done"
sshpass -p $PASSWORD scp /home/username/EasyRSA-3.0.7/pki/reqs/$NAME.req username@192.168.1.105:/tmp
echo "scp done"
sshpass -p $PASSWORD ssh username@192.168.1.105 "/home/username/makevpn.sh $NAME $PASSWORD"
echo "ssh done"
cp /tmp/$NAME.crt /home/username/client-configs/keys/
echo "last CP done"
sudo /home/username/client-configs/make_config.sh $NAME
echo "All Done"
CA 服务器上的代码
#!/bin/sh
NAME=$1
PASSWORD=$2
cd /home/username/EasyRSA-3.0.7/
echo "CD Done"
./easyrsa import-req /tmp/$NAME.req $NAME
echo "Import-req done"
./easyrsa sign-req client $NAME
echo "Sign-req done"
sshpass -p $PASSWORD scp /home/username/EasyRSA-3.0.7/pki/issued/$NAME.crt username@192.168.1.103:/tmp
echo "Scp done"
【问题讨论】:
-
能贴出代码吗?
-
当然。往上看。编辑了我的问题
-
请注意……您几乎总是想引用您的变量。如果您的密码包含空格或任何特殊字符,如
!或*,您将遇到各种麻烦。应该是sshpass -p "$PASSWORD" ...。