主机到主机 SSH 隧道

主机到主机 SSH 隧道

我想在两个 Ubuntu 12.04 服务器之间创建一个完整的 SSH 隧道(我发现了 SSHuttle,但是由于处理文件描述符时存在错误,它会在高负载下崩溃),非常类似于 IPSEC,但因为我只需要在两个主机上使用它,所以创建一个成熟的 IPSEC 配置的复杂性似乎有点大材小用。

我想要实现的是,server1 和 server2 之间传输的所有数据都将被加密,而无需创建数千个 SSH 动态端口。

答案1

此答案属于布兰登切克茨

假设您有两台主机,分别名为 Host-A 和 Host-B。现在我们将在这两者之间创建一个 SSH 隧道,并确保该隧道始终处于启动和活动状态。

需要为主机 A 完成以下配置:

打开终端,转换为 root 并逐一粘贴代码

useradd -d /home/tunnel tunnel
passwd tunnel 
su - tunnel    

下一步是创建 SSH 密钥

在终端中粘贴为

ssh-keygen

然后选择所有提示的默认选项并复制密钥

cat /.ssh/id_rsa.pub

现在我们必须对 Host-B 进行配置

打开终端并执行这些命令

useradd -d /home/tunnel tunnel
passwd tunnel 
su - tunnel

并在终端类型中输入

mkdir .ssh
vi .ssh/authorized_keys

它将在终端中打开一个文件并粘贴从主机 A 复制的密钥。

现在在终端中输入

vi /home/tunnel/check_ssh_tunnel.sh

并粘贴为

createTunnel() {
    /usr/bin/ssh -f -N -L13306:hostb:3306 -L19922:hostb:22 tunnel@hostb
    if [[ $? -eq 0 ]]; then
        echo Tunnel to hostb created successfully
    else
        echo An error occurred creating a tunnel to hostb RC was $?
    fi
}
## Run the 'ls' command remotely.  If it returns non-zero, then create a new connection
/usr/bin/ssh -p 19922 tunnel@localhost ls
if [[ $? -ne 0 ]]; then
    echo Creating new tunnel connection
    createTunnel
fi

保存并关闭并使其可执行

chmod 700 /home/tunnel/check_ssh_tunnel.sh

然后运行脚本,它将启动与远程 PC 的隧道。

阅读上面的链接,这是必须的。

相关内容