首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSH隧道链

SSH隧道链
EN

Server Fault用户
提问于 2013-10-07 14:15:47
回答 1查看 629关注 0票数 0

我在这里找到了解决办法。http://chrisjordan.ca/post/15052405906/chaining-ssh-tunnels。为什么这个答案是对的?A,B,C,D,E之间的连接加密了吗?据我所知,只有本地主机和A之间的连接是加密的。

代码语言:javascript
复制
 ssh -NL 6000:B:22 -o TCPKeepAlive=no -o ServerAliveInterval=15 A &
 ssh -NL 6001:C:22 -o TCPKeepAlive=no -o ServerAliveInterval=15 localhost -p 6000 &
 ssh -NL 6002:D:22 -o TCPKeepAlive=no -o ServerAliveInterval=15 localhost -p 6001 &
 ssh -NL 6003:E:22 -o TCPKeepAlive=no -o ServerAliveInterval=15 localhost -p 6002 &
 ssh localhost -p 6003
 Welcome to E!

我想到的解决办法是:

代码语言:javascript
复制
ssh A 
ssh B
...

假设每个服务器都有一个链中的前一个服务器的公钥。

上述两种解决方案之间有什么区别吗?

EN

回答 1

Server Fault用户

发布于 2013-10-07 15:26:43

使用来自chrisjordan.ca的解决方案,每个连接都是加密的。这意味着来自A->E的每个数据包被加密和解密4次.它还会受到多层ssh隧道开销的影响,这可能会在CPU加密成本之外损害性能。有关通过ssh连接发送通信量的负面影响的信息,请参见HPN SSH

你是从A之前的某个主机开始的,让我们称之为0。

0-流量由第一个ssh加密,它在ssh连接上创建一个隧道。该隧道在A处退出ssh,在没有进一步加密的情况下转发任何通信量(至少,这个特定的SSH不加密)到B。

0-B通信由第二个ssh加密。这个ssh从0-A穿过第一个ssh的隧道,退出隧道,然后终止于B。这个ssh还创建了第二个隧道。使用该隧道的通信量通过0-Bssh连接,在B处退出ssh,然后在没有进一步加密的情况下被转发到C。

类似地,0-C流量穿越0-B隧道,然后退出,进入C,在那里它终止.它创造了另一条隧道。

类似地,0-D和最后0-E流量都是通过逐步增加的ssh隧道转发的.

那么这和你建议的方法有什么区别呢?

1)您没有多个加密和隧道层,所以您的方法应该更快。可能要快得多。

2)另一方面,您的方法要求您使用在0和E之间发送的流量信任每个主机。博客解决方案阻止了这一点,因为最内部的ssh连接加密0到E之间的所有通信量。

3)类似地,博客解决方案在0和E之间创建了一个透明的ssh连接,这样您就可以从端到端执行运行scp/sftp之类的操作。

如果您担心性能问题,但希望维护在0和E之间使用的端到端加密,那么您可能可以通过各个ssh连接逐个构建隧道。类似于(未经测试的):

代码语言:javascript
复制
0%  ssh -L6000:localhost:6000 A
A%  ssh -L6000:localhost:6000 B
B%  ssh -L6000:localhost:6000 C
C%  ssh -L6000:E:22 D

然后在另一个窗口..。

代码语言:javascript
复制
0% ssh localhost:6000
E%
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/544316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档