回到这个问题,我正在通过 OpenSSH (Client: Mac OS X 10.6 | Server: Linux Mint) 执行以下操作,但是被隧道连接的端口没有公开工作:
ssh -R 8080:localhost:80 -N root@example.com
Run Code Online (Sandbox Code Playgroud)
localhost,而不是所有接口上localhost在远程计算机上打开端口时它可以工作,但是当尝试从我的本地计算机访问远程计算机的公共 IP 时,该端口似乎没有打开我如何在 IP 上公开隧道供任何人访问?
我在我的 linux 机器上使用了很多到各种服务器的 SSH 隧道(用于连接到数据库、Web 服务器等),通过 shell 脚本查看当前打开的隧道列表会非常方便。
我可以通过 netstat 上的 grep 识别本地连接:
netstat -n --protocol inet | grep ':22'
Run Code Online (Sandbox Code Playgroud)
但这不会向我显示它连接到的远程端口(显然包括没有隧道的标准 SSH 连接)
更新:答案很好,但没有显示我连接的远程端口。例如,我经常有一条通向 mysql 的隧道,比如 localhost:3308 映射到服务器上的 :3306。通常我可以通过我选择的本地端口来猜测,但同时访问这两个端口会很好。
有任何想法吗?
我试图了解 ssh -L 到 -D 之间的差异。除了 -D 仅是 SOCKS 之外还有什么吗?
谢谢!
我正在尝试将 Windows 计算机设置为始终有两个 SSH 隧道连接到我的 Linux 服务器。
目前,我正在使用 PuTTY 打开两个 SSH 隧道:我在 PuTTY 中登录到服务器,将其最小化,并且从不碰它。这很有效,除非 SSH 连接断开:PuTTY 显示错误消息,我需要手动关闭错误并重新连接到服务器。
我想要做的是有一个应用程序可以设置两个 SSH 隧道,并且可以自动重新连接,而无需手动执行任何操作,包括输入密码。我通过两条隧道发送的数据是 VNC 连接,所以我通常不会在机器前清除错误和输入密码。这两条隧道是一条本地隧道,一条远程隧道。
(是的,我知道自动登录到 SSH 的危害。我计划创建一个没有特权且不允许交互登录的专用用户,并使用它。)
我确实发现了这个问题:如何可靠地保持 SSH 隧道打开?,但那是使用 Linux 作为 SSH 客户端,而我使用的是 Windows。
我想从家里访问我办公室 linux 主机的 ssh 端口。不幸的是,主机位于 NAT 路由器后面。因此,IP 地址不是公开可用的。然而,可以访问另一个互联网主机(服务器),不幸的是,它只是非 root 访问。经过一段时间的搜索,我没有找到合适的解决方案。
以下设置:
Possible connections: Office PC --> Server <-- Home PC
Not possible: Office PC <-X- Server -X-> Home PC
Neither the Home PC, nor the Server can initiate access to the Office PC. But both the Office PC and the Home PC can initiate …
ssh -D 可以在本地机器上创建一个socks端口,将流量传递到远程,然后到其他地方。
ssh -L port:host:hostport, 在本地机器上监听端口,从远程机器的角度将流量传递给“host:hostport”。
ssh -R port:host:hostport是 的对应物ssh -L,它在远程机器上监听端口,并从本地机器的角度将流量传递给“host:hostport”。
但是什么是对应的ssh -D,即如何在远程机器上打开一个socks端口,它将流量传递到本地,然后到其他地方?
可以通过 SSH 实现以下功能吗?
涉及到三台机器:
A. My local machine at home
B. The SSH gateway server at school
C. A workstation in a lab, only reachable through B
Run Code Online (Sandbox Code Playgroud)
我想设置一个 SOCKS 代理。我希望能够在家里的本地计算机上冲浪,就像我在实验室一样。这是由于某些站点只能从学校的公共 IP 访问。
所以我想在主机 C 上运行一个 SOCKS 代理。但我没有设法让它在主机 A 上工作。
我连接到网关,然后从网关连接到工作站。但是我无法让网关正确地将流量从代理传输到代理。
我怎样才能做到这一点?
我经常建议人们使用 SSH 隧道来保护他们在开放 WIFI 或其他不安全情况下的浏览。
最近,在我建议使用 SSH 隧道后,一位朋友问我 SSH 隧道的安全性如何。我绊了一下并重申了“它的安全性”。
尽管他对这个答案很满意,但还是让我有点无法完全回答。
所以问题出来给你们:
“SSH 隧道有多安全?”
我在 WinXP 上使用 Ccygwin(使用 bash shell)。我想将一个文件从我的本地主机 SCP 到远程机器——host2。但是,我只能通过 SSH 连接到中间机器——host1,然后从那里通过 SSH 连接到 host2。(注意,我无法从本地主机访问 host2)。
我以为隧道是我的答案,但是当我尝试建立隧道时
ssh -L 9999:localhost:9998 dalvarado@host1 'ssh -L 9998:localhost:1234 -N dalvarado@host2'
Run Code Online (Sandbox Code Playgroud)
但是在输入这个命令并按回车后,系统就挂了。设置隧道然后SCP文件的正确方法是什么?
谢谢, -
我一直在努力设置一个有效的配置来打开与第二台机器的连接,通过另一台机器,并使用 id_rsa(它要求我输入密码)连接到第三台机器。
我在另一个论坛上问过这个问题,但我没有收到可以认为非常有帮助的答案。
这个问题,更好地描述,如下:
Local machine: user1@localhost
Intermediary machine: user1@inter
Remote target: user2@final
Run Code Online (Sandbox Code Playgroud)
我可以使用伪 tty 完成整个连接:
ssh -t inter ssh user2@final
Run Code Online (Sandbox Code Playgroud)
(这将询问我在机器“inter”中的 id_rsa 文件的密码)
但是,为了加快速度,我想设置我的 .ssh/config 文件,以便我可以使用以下命令简单地连接到机器“final”:
ssh final
Run Code Online (Sandbox Code Playgroud)
到目前为止,我所拥有的 - 不起作用 - 在我的 .ssh/config 文件中:
Host inter
User user1
HostName inter.com
IdentityFile ~/.ssh/id_rsa
Host final
User user2
HostName final.com
IdentityFile ~/.ssh/id_rsa_2
ProxyCommand ssh inter nc %h %p
Run Code Online (Sandbox Code Playgroud)
id_rsa 文件用于连接到中间机器(这不需要我输入密码),而 id_rsa_2 文件用于连接到机器“final”(这个需要密码)。
我试过混合一些LocalForward和/或RemoteForward字段,并将 id_rsa 文件放在第一台和第二台机器上,但我似乎无法在没有任何配置的情况下成功。
PS:我试图从以下方面获得一些帮助的线程:
http://www.linuxquestions.org/questions/linux-general-1/proxycommand-on-ssh-config-file-4175433750/