我正在运行无头式 Ubuntu 14.04.1 服务器。我想使用商业 VPN 服务来保护服务器的互联网连接,并且我的 VPN 提供商使用密码进行身份验证。我已在服务器上安装了它,并且它具有启动与我的 VPN 连接openvpn
所需的.ca
文件。.conf
但是,为了启动所述连接,我需要ssh
输入并发出命令(sudo openvpn --config <conf-file>
后跟我的 VPN 凭据),然后保持我的终端打开,只要我希望服务器保持与 VPN 的连接。
在无头设置下,这是不切实际的。我一直试图远程发出命令,以便它可以在我断开与服务器的连接时在后台运行,但我面临以下问题:
- 我可以将服务器设置为在启动时自动连接,但这需要以纯文本形式存储我的 VPN 凭据,而我对此并不赞同。
- 我无法
ssh
以 身份运行单个命令root
(无需以 身份连接到服务器root
,但我不确定设置密码是否root
是个好主意。意见?)。也就是说,如果我发送,ssh <user>@<server> "sudo <command>"
我会得到sudo:没有 tty 存在并且没有指定 askpass 程序
fN
我尝试传递的任何标志组合ssh
都会导致命令在被要求输入 VPN 凭据之前进入后台。
nmcli
我的 VPN,但没有 GUI 我就无法创建network-manager
连接,或者至少我不知道如何创建)。
(PS:我尝试在网上寻找解决方案,但关于设置 OpenVPN 连接的结果太多了到某人的服务器,如果其中隐藏着任何相关内容,我就无法找到它。)
答案1
您可以登录服务器并启动屏幕(输入screen
。如果未安装,您可以使用apt-get install screen
在 debian 或 ubuntu 或yum install screen
fedora 中获取它),这将创建一个新的终端会话,即使您的 ssh 连接关闭,该会话仍可继续运行。在 screen 会话中启动您的 OpenVPN。您可以通过 分离会话(退出并让其继续运行)ctrl-a d
。然后您可以注销,OpenVPN 将继续在 screen 中运行。如果您再次登录,您可以使用 重新连接到您的 screen 会话screen -x
。
在屏幕内,您还可以通过ctrl-a c
(create) 启动新会话,并使用ctrl-a n
(next) 或ctrl-a p
(previous) 在会话之间切换。使用man screen
了解更多信息或使用 Google ;) 您必须按下ctrl-a esc
屏幕内才能向上滚动。如果您关闭屏幕内的最后一个 shell,则屏幕将终止。