问题标签 [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.
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
抛出以下错误:
任何帮助将非常感激。
谢谢。
ssh - 如何使用 SSH 连接到生产机器
如何使用 SSH 隧道连接到生产机器?它有几个阻塞的端口,我想从我的开发盒连接并调试它。
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 隧道后如何指定主机?我试过到处搜索,但似乎无法弄清楚。
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 连接到同一服务器。
networking - 可以用 IPsec 完成端口转发吗?
如果我理解正确,SSH 隧道允许通过 SSH 服务器将本地端口绑定到远程端口。如果我是对的,可以用 IPsec 做类似的事情吗?
python - Python ssh 使用代理在多台机器上建立隧道
这个问题需要一点上下文:我正在制作一个应用程序,它可以在 python 中将文件/文件夹从一台机器复制到另一台机器。连接必须能够通过多台机器。我确实将机器串联连接,所以我必须跳过它们,直到找到正确的机器。
目前,我正在使用 python 的子进程模块(Popen)。作为一个非常简单的例子,我有
我的问题:当这样做时,我似乎无法让代理转发工作,这在这样的事情中是必不可少的。有没有办法做到这一点?
我尝试像这样在 Popen 中使用 shell=True 关键字
这样做的问题是机器的名称是由用户输入给出的,这意味着它们可以很容易地注入恶意 shell 代码。第二个问题是我每次建立连接时都会运行一个新的 ssh-agent 进程。
我的 bashrc 中有一个很好的函数,它可以识别已经运行的 ssh-agents 并设置适当的环境变量并添加我的 ssh 密钥,但是当然子进程不能引用我的 bashrc 中定义的函数。我尝试在 Popen 中使用 shell=True 设置 executable="/bin/bash" 变量无济于事。
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 步:
在家连接:
或者从中间机器连接:
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:8000
SOAP 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 并且不符合提供赏金的资格,因此对任何付出额外工作并可能收到赏金的人感到抱歉!
svn - SVN 的多个用户与单个 ssh 帐户
我正在尝试将多个 svn 作者用于单个托管 ssh 帐户。我遵循http://svn.apache.org/repos/asf/subversion/trunk/notes/ssh-tricks
了隧道用户的技巧,但它仍然显示与我的托管 ssh 帐户用户名相同的作者。我还检查了 SVN 版本必须比 1.0.x 更新以使其适用于隧道用户。
更新
我遵循的是:
- 首先,我从我的托管帐户中获取了密钥
id_rsa
- 然后我用来
PuttyGen
导入和提取私钥。 - 之后,我
session
用我的完整域(.com/.net 等)在 Putty 中创建了一个,并将私钥附加到 SSH-> AUTH 中,我还添加了我的主机帐户用户名以data
进行自动登录。 - 为了验证,我检查了会话,它不需要任何密码就可以工作。
- 现在我在dir 中
创建了我的
id_rsa
密钥副本,这是~/.ssh
authorized_keys
svnserve
- 然后我附加了一行
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
- 现在,当一切准备就绪时,我在服务器上创建了一个 repo
svnadmin create myrepo
- 我签出
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 .....
macos - 用于通过 SSH 管理 Redis 的桌面客户端
是否有用于通过 SSH 隧道管理 Redis的桌面客户端?我在主页上找不到任何东西。我首选的操作系统是 MacOS,但如果存在可以在 wine 下运行的东西,那对我来说没问题