通过专用 OpenVPN 连接进行 SSH

通过专用 OpenVPN 连接进行 SSH

我有几个想要连接的 SSH 服务器,只能通过(不同的)OpenVPN 网络访问。

现在我的问题是:我为每个网络设置了一组不同的证书和略有不同的配置(*.crt、*.key、*.ovpn)。由于我的服务器可以从一个网络移动到另一个网络(通常每天两次或更多),我想知道是否有一个简单的 ssh/vpn 包装器允许我调用:

 ssh [email protected] -ovpn "ovpnfile" -cert "cert.crt"

这样我每次只需更改服务器名称。该包装器应自动通过 openvpn 隧道传输我的 ssh 连接,并在我关闭 ssh 连接时终止连接。

这可能吗?

答案1

先决条件:

  • 将 openvpn 文件中的每个“redirect-gateway”或“route”替换为“##SERVERROUTE##”
  • 确保你可以将主机名解析为 IP 地址

#!/bin/bash
TMPFILE=/tmp/._chrissvpn_$RANDOM

SSHSERVER=`echo $1| cut -d "@" -f 2`

SSHSERVIP=`host $SSHSERVER | head -n 1 | awk '{print $4}'`

cat $2 | sed 's/##SERVERROUTE/$SSHSERVIP/g' > $TMPFILE

openvpn --config $TMPFILE

if [ "$?" -eq "0" ]; then

    ssh $1

fi

相关内容