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

ssh隧道链
EN

Stack Overflow用户
提问于 2009-06-18 04:45:50
回答 5查看 16.4K关注 0票数 17

以下是场景

我正在尝试让scp访问server3,但只有公共ssh可以访问服务器1。要使用ssh访问server3,我必须先使用ssh访问server1,然后使用ssh访问server2,然后使用ssh访问server3。

我希望最终的结果是我可以通过WinSCP连接到localhost:8022,这样我就可以访问server3的文件了。

我正在尝试使用ssh隧道,但在我读过的所有教程和问题中,似乎没有一个适用于这种情况。

我在Windows上使用putty。

任何建议都是非常有帮助的。谢谢。

EN

回答 5

Stack Overflow用户

发布于 2009-06-18 06:35:36

想到的第一个解决方案是通过隧道将一个本地端口连接到每个服务器。由于SSH使用端口22,因此我们将使用每个SSH连接将一个本地端口作为隧道连接到下一个服务器的端口22。

当您打开PuTTY时,您将看到PuTTY配置对话框。您需要编辑的两个类别是"Session“和"Connection→SSH→Tunnels”。

  1. 打开PuTTY的副本。使用以下设置:

代码语言:javascript
复制
- Connect to host
代码语言:javascript
复制
    - Host name: `server1`
    - Port: 22

代码语言:javascript
复制
- Tunnel a port
代码语言:javascript
复制
    - Local mode
    - Source port: `15500`
    - Destination: `server2:22` (the secure shell port)

现在,每次您连接到本地计算机上的端口15500时,您的连接都会被隧道传输到server2上的端口22。

  1. 打开PuTTY的副本。使用以下设置:

代码语言:javascript
复制
- Connect to host  
    - Host name: `localhost`
    - Port: 15500

代码语言:javascript
复制
- Tunnel a port  
    - Local mode
    - Source port: `15501`
    - Destination: `server3:22` (the secure shell port)

  1. 打开PuTTY的副本。使用以下设置:

代码语言:javascript
复制
- Connect to host  
    - Host name: `localhost`
    - Port: 15501

代码语言:javascript
复制
- Tunnel a port  
    - Local mode
    - Source port: `15502`
    - Destination: `server3:22` (the secure shell port)

  1. 使用WinSCP在端口15502上连接到localhost。您的连接将像直接连接到server3一样进行隧道传输。

请在评论中让我知道这是否适用于您。祝好运!

票数 10
EN

Stack Overflow用户

发布于 2012-02-10 07:00:15

此方法类似于在打开的ssh配置文件中使用proxycommand的方法。

此方法的前提条件是,Pageant必须与所有中间(代理)主机的公钥身份验证一起使用,否则您将最终得到一个闪烁的游标,而不是其他任何内容。要了解有关Pageant、PuTTYgen和公钥的更多信息,请参阅:

http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter8.html#pubkey

http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter9.html#pageant

我们有四台机器可以按此顺序访问

PuttyPC -> server01 -> server02 -> server03

对于server01,我们有一个Putty保存的会话,如下所示:

主窗口:user1@server01 //端口22 // SSH

将此会话另存为server01

对于server02,我们有一个Putty保存的会话,如下所示:

主窗口:user2@server02 //端口22 // SSH

代理配置窗口:键入local //代理命令plink -load server01 -nc %host:%port

将此会话另存为server02

对于server03,我们有一个Putty保存的会话,如下所示:

主窗口:user3@pc3 //端口22 // SSH

代理配置面板:键入local //代理命令plink -load server02 -nc %host:%port

将此会话另存为server03

这意味着server03的保存会话将调用server02的保存会话,而server02保存的会话将调用server01会话。

票数 6
EN

Stack Overflow用户

发布于 2009-06-18 04:54:42

有一个描述得很好的perl script解决方案here。一定要阅读帖子上的评论。

请阅读有关SSH Agent Forwarding的更多信息(请参阅perl脚本帖子注释)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1010808

复制
相关文章

相似问题

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