问题标签 [ssh-tunnel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1315 浏览

java - 使用 ssh 隧道从远程机器验证 mongodb

我在远程服务器(debian)中运行了 mongo db,并启用了身份验证。我需要从我的本地机器(windows)使用 UMongo(mongodb 的 UI 工具)连接到它以可视化数据。我没有在服务器机器上打开 mongodb 端口,但是已经建立了一个从我localhost:9999的到mongodb-host:port. 作为 UMongo 中的连接 uri,我给出了

并尝试连接。它显示数据库但不进行身份验证,它会引发身份验证错误。我已确保提供的凭据是正确的。想知道凭据是否没有通过 ssh 隧道正确传递到 mongodb 服务器。

更新:我在禁用身份验证的情况下重新启动了 mongo 服务器。之后我尝试访问远程 mongo shell。当我尝试使用时mongo --port 9002,它给出了以下错误:

但是当我尝试使用时mongo --port 9002 --nodb,我能够得到 mongo shell。然后我尝试use mydb抛出以下错误:

任何帮助将非常感激。

谢谢。

0 投票
1 回答
318 浏览

ssh - 如何使用 SSH 连接到生产机器

如何使用 SSH 隧道连接到生产机器?它有几个阻塞的端口,我想从我的开发盒连接并调试它。

0 投票
4 回答
65680 浏览

mysql - MySQL 通过 SSH 隧道连接 - 如何指定其他 MySQL 服务器?

我有大约 50 个数据库都设置在不同的主机名上,要求我通过 SSH 隧道连接到它们。

例如:

  • SSH 主机位于ssh.example.com

  • MySQL 主机位于mysql1.example.com

我已经设法使用 autossh(运行 Debian 的 Web 服务器)创建了隧道,但我似乎无法弄清楚如何连接到“超出”SSH 隧道的特定 MySQL 主机名。

键入lsof -i -n | egrep '\<ssh\>'确认隧道正在工作(将端口 3307 发送到 ssh.example.com 端口 3306)

因此,当我尝试mysql -h 127.0.0.1 -P 3307连接被拒绝时。不太奇怪,因为它不是 MySQL 服务器。

我对你们的问题:

mysql1.example.com创建 SSH 隧道后如何指定主机?我试过到处搜索,但似乎无法弄清楚。

0 投票
1 回答
3679 浏览

ssh - Navicat SSH 问题

我在使用 SSH 隧道连接到 Navicat 时遇到问题,而且似乎我所有的鸭子都排成一排,所以想知道是否有其他做过此操作的人取得了成功:

我设置了一个普通(TCP)用户并检查了连接(主机、端口、用户、密码和在 cpanel 中添加的远程访问 ip)以确保它正常工作。

按照说明,然后我转到 SSH 选项卡并启用它([x] SSH Tunnel)。

我为主机添加了相同的IP,然后为端口添加了22,然后添加了root作为用户,选择了密码作为身份验证,然后输入了root密码。

我不断收到 host.mydomainame.com 无法连接到这个 mysql 主机。

我知道它正在工作,因为:a)如果我使用了错误的用户/密码,我只会收到“无法创建隧道”错误 b)我的主机确认在我使用正确的 root/密码组合连接时创建了 SSH 连接(即使错误消息是在我这边生成的)

顺便说一句,按照 Navicat,我确保 AllowTcpForwarding 设置为 yes。

我还确认使用 bithive 我可以使用同一用户从同一 IP 连接到同一服务器。

0 投票
1 回答
274 浏览

networking - 可以用 IPsec 完成端口转发吗?

如果我理解正确,SSH 隧道允许通过 SSH 服务器将本地端口绑定到远程端口。如果我是对的,可以用 IPsec 做类似的事情吗?

0 投票
3 回答
1508 浏览

python - Python ssh 使用代理在多台机器上建立隧道

这个问题需要一点上下文:我正在制作一个应用程序,它可以在 python 中将文件/文件夹从一台机器复制到另一台机器。连接必须能够通过多台机器。我确实将机器串联连接所以我必须跳过它们,直到找到正确的机器。

目前,我正在使用 python 的子进程模块(Popen)。作为一个非常简单的例子,我有

我的问题:当这样做时,我似乎无法让代理转发工作,这在这样的事情中是必不可少的。有没有办法做到这一点?

我尝试像这样在 Popen 中使用 shell=True 关键字

这样做的问题是机器的名称是由用户输入给出的,这意味着它们可以很容易地注入恶意 shell 代码。第二个问题是我每次建立连接时都会运行一个新的 ssh-agent 进程。

我的 bashrc 中有一个很好的函数,它可以识别已经运行的 ssh-agents 并设置适当的环境变量并添加我的 ssh 密钥,但是当然子进程不能引用我的 bashrc 中定义的函数。我尝试在 Popen 中使用 shell=True 设置 executable="/bin/bash" 变量无济于事。

0 投票
3 回答
28372 浏览

ssh - 如何使用反向 SSH 隧道绕过防火墙和 NAT

我正在尝试在路由器后面的机器中生成 SSH 服务器。

首先,我尝试将 SSH 绑定到我的公共 IP 地址:

然后提示我输入密码请求,但是我的用户名密码似乎不起作用。

显然我知道我的用户名密码,所以在我看来,它正在尝试在同一网络下的另一台计算机上进行身份验证。

任何建议如何解决这个问题?

当您无权访问路由器时,它还可以帮助我在路由器后面创建 SSH 服务器的任何替代方法。

iptables 中的端口都是开放的。

更新

正如托马斯奥斯特的回答所建议的那样,我尝试了以下方法。

在路由器后面的机器中,我执行了以下命令:

$ ssh -R10002:localhost:22 <remote_public_ip_address> -l <my_remote_server_username>

<remote_ip_address>是我完全控制的具有公共 IP 和 SSH 服务器的服务器的 remote_ip_address。

<my_remote_server_username>是远程服务器用户名。

之后,我尝试从远程服务器连接到路由器后面的服务器,如下所示:

$ ssh -p 10002 <remote_public_ip_address>

但是,此命令显示以下输出:

于是我在 iptables 防火墙中打开了 10002 端口,使用以下命令:

之后我再次执行该命令,但它显示相同的错误消息。

在路由器后面的机器中,我在 iptables 中打开了所有端口。

更新 2

您必须在 remove_public_ip_address 服务器的 /etc/ssh/sshd_config 中允许端口转发

我试图允许在 sshd_config 文件中添加此命令的端口转发:

但它给了我这个错误信息:

在“ssh -R ....”之后,您是否打开了窗口?

执行该命令后,它连接到远程公共机器,是的,我让窗口保持打开状态。

创建隧道后,可以在公共服务器上使用 ssh -p 10002 localhost 吗?

是的,如果我在公共服务器中执行该命令,它会在向我询问凭据后连接。

请在路由器后面的机器上尝试“ssh localhost”以检查 sshd 是否正在运行和工作。

这也有效。

更新 3

我终于能够让它工作(再次感谢Thomas Oster

我们将使用三台机器:

目标机器:我们要连接的机器。

中间机:充当连接中介的服务器(在我的例子中是 Linode)

家用计算机:我们将访问目标计算机的位置。

这些是我遵循的步骤

步骤1:

添加 GatewayPorts 选项:

网关端口 是

重启ssh。

第2步:

这将通过端口 4040 将您的公共计算机与您的目标计算机链接起来

它将连接到中间机器并提示终端,您必须打开此选项卡。

第 3 步:

在家连接:

或者从中间机器连接:

资源

0 投票
3 回答
9210 浏览

windows-7 - 捕获并重定向来自给定 ip:port 的传出流量到目标 ip:port

在 Windows 7 上,我有一个运行在我127.0.0.1:34567需要访问的本地地址上的 SSH 隧道,因此我可以12.34.56.78:8080在 SSH 代理的帮助下访问,因为我无法直接访问该 IP(由于不在白名单上)。

因此,我的基本简单目标是,在 Windows 上,每当我12.34.56.78:8080从任何地方(例如我的浏览器)请求时,我希望请求被127.0.0.1:34567透明地转移到,并且如果可能的话,我想要一个软件解决方案而不是硬件解决方案。我认为这通常是在 Linux 中通过 iptables 实现的,但我正在寻找可以在 Windows 上使用的东西。

有谁知道这怎么可能?如果我需要为此使用任何外部 Windows 程序,那很好,但我更喜欢它是免费的。

编辑:请不要向我提供反向隧道解决方案。我的目标是请求我被阻止的相同 ip:port,但能够通过我现有的 SSH 隧道成功访问该 ip:port。反向隧道涉及请求不同的 ip:port,这不是我想要的(如果我想向不同的 ip:port 发出请求,我已经有一个可以使用的正向隧道)。

示例场景:假设您有一个 C 编译.exe文件,您无权访问其源代码,该文件被硬编码为请求12.34.56.78:8000SOAP Web 服务。问题是,您的 IP 被该 ip:port 阻止,但您确实可以访问未被阻止的 SSH 服务器,210.212.239.117:8080并且还为该 SSH 服务器设置了 SSH 隧道以访问该 ip:port ...但是您.exe的原始 ip:port 已硬编码,因此您不能只告诉它请求 SSH 隧道 ip:port,因为由于它是硬编码的,因此无法以任何方式更改要请求的 ip:port!您必须将210.212.239.117:8080计算机上的请求以某种方式转移到操作系统级别的 SSH 隧道。那么你将如何做到这一点?

编辑2:我也不是在寻找路由表(我认为)。我不想修改我的请求到达目标 ip:port 的路由;我实际上想让请求的 ip 和端口自己默默地改变。我有点想实现类似hosts文件的东西,除了将主机名解析为 ips 之外,我希望将 ip:ports 重新解析为不同的 ip:ports。

赏金:对不起,我的这个 stackoverflow 问题似乎算作 Offtopic 并且不符合提供赏金的资格,因此对任何付出额外工作并可能收到赏金的人感到抱歉!

0 投票
2 回答
1546 浏览

svn - SVN 的多个用户与单个 ssh 帐户

我正在尝试将多个 svn 作者用于单个托管 ssh 帐户。我遵循http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks了隧道用户的技巧,但它仍然显示与我的托管 ssh 帐户用户名相同的作者。我还检查了 SVN 版本必须比 1.0.x 更新以使其适用于隧道用户。

更新

我遵循的是:

  1. 首先,我从我的托管帐户中获取了密钥id_rsa
  2. 然后我用来PuttyGen导入和提取私钥。
  3. 之后,我session用我的完整域(.com/.net 等)在 Putty 中创建了一个,并将私钥附加到 SSH-> AUTH 中,我还添加了我的主机帐户用户名以data进行自动登录。
  4. 为了验证,我检查了会话,它不需要任何密码就可以工作。
  5. 现在我在dir 中 创建了我的id_rsa密钥副本,这是~/.sshauthorized_keyssvnserve
  6. 然后我附加了一行command="~/bin/svnserve -t -r ~/svn --tunnel-user=makki",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAfagd..... makki@domain.com
  7. 现在,当一切准备就绪时,我在服务器上创建了一个 reposvnadmin create myrepo
  8. 我签出svn+ssh://mydomain.com/home/svn/myrepo并成功签出但是现在当我提交时,它显示作者为我的 ssh 帐户,而不是makki我在authorized_keys文件中附加的行中提到的那样。

请指导我在流程中缺少什么...

授权密钥内容

line#1 ssh-rsa AAAAB3.......
line#2 command="~/bin/svnserve -t -r ~/svn --tunnel-user=makki",no-port-forwarding,无代理转发,无 X11 转发,无 pty ssh-rsa AAAAB3NzaC1yc2E .....

0 投票
0 回答
3449 浏览

macos - 用于通过 SSH 管理 Redis 的桌面客户端

是否有用于通过 SSH 隧道管理 Redis的桌面客户端?我在主页上找不到任何东西。我首选的操作系统是 MacOS,但如果存在可以在 wine 下运行的东西,那对我来说没问题