- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道为什么当我使用 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 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="275254425549464a4267161e150916111f091609161712" rel="noreferrer noopener nofollow">[email protected]</a>:/tmp
echo "scp done"
sshpass -p $PASSWORD ssh <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6b1e180e19050a060e2b5a5259455a5d53455a455a5b5e" rel="noreferrer noopener nofollow">[email protected]</a> "/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 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a1d4d2c4d3cfc0ccc4e19098938f9097998f908f909192" rel="noreferrer noopener nofollow">[email protected]</a>:/tmp
echo "Scp done"
最佳答案
我只是浏览了 easyrsa 脚本的代码 here 。这可能与您的不同,因为错误行是 341。在 Github 页面上,它是第 352 行,它是名为 cleanup
的函数的一部分。看来这个函数只是作为一个陷阱附加的(第 2744 行)。陷阱用于捕获诸如 sigint
(中断)之类的信号,该信号通常使用 ctrl+c
在终端上发送(并且可能显示类似 ^C 的字符)。该错误仅显示在您的脚本中的原因是,它可能会导致发出一个信号,而如果您通过 ssh 手动运行该信号,您通常不会收到该信号。
错误本身并不是问题。
来自 Github 的代码:
第 352 行:
(stty echo 2>/dev/null) || { (set -o echo 2>/dev/null) && set -o echo; }
第 2744 行:
trap "cleanup" EXIT
看起来该行只是试图重新打开您键入的字符的终端输出(通过stty echo
)。有时,程序会在某处禁用终端输出,然后在程序完成时重新启用它。但是,如果您要中途终止程序(例如使用 ctrl+c
),您的程序将终止,且终端输出仍处于禁用状态。这将使终端看起来被卡住。它仍然可以工作,但不会显示您用键盘输入的字符。陷阱的目的是确保无论程序如何退出,终端输出都会重新启用。
更多信息...
第 567 行有一个禁用 echo 的函数。看起来重点是不要在屏幕上显示密码。如果您在密码读取期间终止该程序,则终端上的回显将保持禁用状态。错误的原因可能更多地与您运行脚本的方式有关。无论出于何种原因,它都会导致 stty echo 失败。第 352 行假设失败是由于 stty echo 不是有效命令所致。因此,在失败时 ( ||
),它会尝试使用不同的方法 (set -o echo
) 来启用 echo。如果我尝试在终端上运行它,我还会收到错误(bash 4.2):
-bash: set: echo: invalid option name
关于bash - 自动创建证书 OpenVPN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62450894/
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我有一个在 linux 主机上创建到另一个 linux 主机的 openvpn 连接。我相信这里可能存在配置错误或误解。我生成了客户端 key 和服务器 key ,并且 CA 就位,但我似乎根本无法连
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我不知道为什么当我使用 SSH 运行脚本时会出现错误,但是当我从 CA 服务器运行 bash 时一切正常。 我根据这篇文章安装了我的VPN服务器https://www.digitalocean.com
我已经配置了 OpenVPN,它工作正常。但是我总是需要导入配置并且它有 ca 证书,我启用了用户名和密码身份验证。但我仍然需要添加此证书。 如何在没有证书和配置但只有用户名和密码的情况下连接 ope
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 3年前关闭。 Improve this qu
我正在尝试通过 Tapinstall 在 Windows 中控制 OpenVPN TAP 驱动程序的多个实例。似乎因为所有设备都有相同的 HWID - 'tap0901' - 我无法使用 tapins
我正在尝试为 linux 编写一个 python 脚本来启动 openvpn,但在让 openvpn 开始使用子进程时遇到了问题。 我正在使用以下命令启动 openvpn: openvpn_cmd =
我们已经编写了一个应用程序,它位于控制 OpenVPN 的托盘中,作为对更大应用程序的扩展。 如果你在命令行运行openvpn.exe,你可以按F4关闭它。我们需要从 C# 发送相同的按键,但您只能将
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 5 年前。 这个问题似乎不是关于 a specific programming problem,
我正在尝试按照本教程在CentOS 7上设置Open VPN最新版本 https://www.hugeserver.com/kb/how-to-config-openvpn-linux-server/
我想使用 CloudFormation 配置 OpenVPN,我想我可以从市场获取 AMI ID 并启动它,因为我想启动一个具有 10 个连接的实例,但不幸的是我无法从市场获取 AMI ID 。如何获
我设置了一个基于连接到 openvpn 服务器的 alpine 的 openvpn 客户端容器,不知道它在哪里。我的想法是我想到达这个 vpn 网络中的服务器,而不是来自带有 openvpn 的容器(
我搜索了 OpenURL scheme 以查找是否安装了 OpenVPN。 到目前为止没有运气。 还有其他方法可以验证吗? 最佳答案 OpenVPN Connect 1.0.6 及更高版本安装 ope
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
我已经从 https://code.google.com/p/ics-openvpn/source/checkout它编译成功但是当我创建一个配置文件并尝试连接它时..它会给我一个错误“Error w
我正在开发 Android 应用程序并希望它连接到 OpenVPN 服务器。自 Android 4.0 以来,有一个 VPNService类(class)。然而,此类需要拦截所有网络数据包(并需要特殊
我有一个定制的 C(跨平台)应用程序。一个 OpenVPN 变体。我想用 NDK 为 Android 版本编译这个。 它在 Linux 下编译。这是否意味着我也可以使用 NDK 轻松地为 Andoir
我需要使用 openvpn 协议(protocol)将我的应用程序连接到网络上的不同服务器。 所有使用 OpenVPN Connect 或 OpenVPN for Android 应用程序的作品(li
我是一名优秀的程序员,十分优秀!