标签: ssh-tunnel

HTTPS SSH 隧道

好的,我有一个 Web 服务器,我们称之为服务器 A,它通过 HTTPS 提供服务。我有一个 SSH 网关服务器,我们称之为服务器 B。

由于防火墙规则,我无法从台式机 linux 计算机访问服务器 A 的 Web 服务。因此,要查看 Web 服务,我必须使用 X Forwarding SSH 到服务器 B 并通过 SSH 隧道运行 firefox。服务器 B 可以访问服务器 A 的 Web 服务,因此它可以工作。

我想知道是否可以在我的 PC 和服务器 B 之间创建一个 SSH 隧道,这将允许我使用桌面 Web 浏览器访问服务器 A 上的服务,而不是通过 SSH 隧道运行 firefox。

linux ssh https ssh-tunnel

9
推荐指数
2
解决办法
4万
查看次数

使用单个端口的多个反向 SSH 隧道

我能够接受来自单个服务器上多个远程系统的反向 SSH 连接,每个连接使用一个端口:

Remote A: ssh -fN -R5000:localhost:22 user@server-ip -p22
Remote B: ssh -fN -R5001:localhost:22 user@server-ip -p22
Remote C: ssh -fN -R5002:localhost:22 user@server-ip -p22
Run Code Online (Sandbox Code Playgroud)

我可以根据需要从本地客户端访问这些系统:

Access Remote A: ssh root@server-ip -p5000
Access Remote B: ssh root@server-ip -p5001
Run Code Online (Sandbox Code Playgroud)

这需要在服务器上为每个远程系统转发一个端口。当 100 多个遥控器连接时,除了在服务器防火墙中打开 100 多个端口并将每个遥控器静态分配给上述端口之外,我还有其他选择吗?我的目标是让多个遥控器按需创建隧道,我可以在其中查询连接的人。

我发现 sslh 是一个多路复用器,可以根据协议区分单个端口上的流量,但这仅适用于不同的协议,例如。ssl/ssh。是否有允许在单个端口上建立多个隧道的解决方案?

例子:

Remote A: ssh -fN -R5000:localhost:22 user@server-ip -p22 -identifier abc123
Remote B: ssh -fN -R5000:localhost:22 user@server-ip -p22 -identifier def456
access Remote A: ssh root@server-ip -p5000 -identifier abc123
access Remote B: ssh root@server-ip -p5000 -identifier def456
Run Code Online (Sandbox Code Playgroud)

linux ssh ssh-tunnel

9
推荐指数
1
解决办法
5828
查看次数

为什么在使用端口转发时注销 SSH 会话会挂起?

我使用动态SSH端口转发(-D)和正常的SSH端口转发(-L-R用于许多不同的事情,包括增加的加密层,以我的无线网络流量)。我通常使用的命令如下所示:

ssh -l raam -D 9000 my-linux-server.com
Run Code Online (Sandbox Code Playgroud)

启动隧道后,我将 Web 浏览器配置为使用端口 9000 的 127.0.0.1 SOCKS v5 代理。现在浏览器中的所有流量(DNS 除外)都通过 SSH 隧道传输。

当我准备关闭隧道时(例如,当我将笔记本电脑带到另一个位置时),我只需键入“ logout”。但是,SSH 会话挂起,我必须按CTRL+c才能恢复本地提示。

为什么会发生这种情况,我该如何预防?

(我的猜测是我通过隧道打开的连接保持打开状态,我的本地 SSH 客户端正在等待它们关闭,然后再给我提示。如果是这种情况,我如何强制所有这些连接在我'我准备退出?)

ssh port-forwarding ssh-tunnel

8
推荐指数
2
解决办法
5261
查看次数

SSH 隧道作为 Windows 服务

我想设置一个 SSH 隧道以作为 Windows 服务运行,我需要能够仅使用命令行来设置它,因此这会计算出任何不包含命令行版本的软件。

我可以使用哪些适用于 Windows 的工具来执行此操作?

ssh windows-service tunneling ssh-tunnel

8
推荐指数
1
解决办法
1万
查看次数

ssh 如何允许设置远程端口转发但不执行命令?

如何设置 SSH 命令以允许端口转发但不执行命令。

我知道 ssh 登录可以使用 -N 来停止执行命令,但是可以设置 ssh 配置文件来禁止它吗?

在 Linux 中限制 shell 的类型和路径是可选的,但是可以在 SSH 配置本身中完成吗?

ssh port-forwarding ssh-tunnel

8
推荐指数
1
解决办法
4448
查看次数

如何记录 SSH 端口转发?

假设我有一个 SSH 服务器,启用了端口转发。用户建立 SSH 连接并通过它转发 BitTorrent 流量或其他非法或滥用流量是相当简单的。如何设置日志记录以记录用户所做的端口转发?

ssh ssh-tunnel

8
推荐指数
1
解决办法
1万
查看次数

反向SSH隧道

我正在尝试将 Web 流量从远程服务器转发到我的本地计算机,以测试一些 API 集成(tropo、paypal 等)。基本上,我正在尝试设置类似于 tunnlr.com 提供的内容。

我已经使用命令启动了 ssh 隧道

$ssh –nNT –R :7777:localhost:5000 user@server

然后我可以看到服务器现在正在侦听端口 7777

user@server:$netstat -ant | grep 7777

tcp        0      0 127.0.0.1:7777          0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:7777                :::*                    LISTEN  


$user@server:curl localhost:7777
Hello from local machine
Run Code Online (Sandbox Code Playgroud)

所以这很好用。curl 请求实际上是从本地机器提供的。

现在,我如何启用 server.com:8888 以通过该隧道路由?

我试过像这样使用 nginx:

upstream tunnel {
    server 0.0.0.0:7777;
}
server {
  listen 8888;
  server_name server.com;
  location / {
    access_log /var/log/nginx/tunnel-access.log;
    error_log /var/log/nginx/tunnel-error.log;
    proxy_pass http://tunnel;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect off; …
Run Code Online (Sandbox Code Playgroud)

ssh nginx tunneling iptables ssh-tunnel

8
推荐指数
1
解决办法
1万
查看次数

(ssh 隧道?)通过具有公共 IP 的 *DIFFERENT* 服务器访问具有私有 IP 的远程服务器

让我们假设以下主机:

  • 本地主机:我的笔记本电脑
  • remoteserver:具有公共 IP 的服务器,它运行 SSH 服务器。
  • private.remoteserver:具有私有 IP 的服务器,只能从remoteserver访问。

我无权sudo访问remoteserver,因此我无法使用 root 用户进行更改。

问题是:是否可以通过单个命令从remoteserver访问private.remoteserver上的端口?

我在没有运气的情况下玩过 ssh 隧道。它想为private.remoteserver创建一个 SSH 别名,如本文所述

例如,我想从本地主机运行:

curl http://private.remoteserver:8080/
Run Code Online (Sandbox Code Playgroud)

连接到 private.remoteserver 上的端口 8080。这可能吗?

remote-access linux ssh remote ssh-tunnel

8
推荐指数
1
解决办法
1万
查看次数

提高通过高延迟链接传输大文件的速度

因此,我最近需要从我们的海外办事处之一通过 Internet 提取大文件。两个办公室在两个方向上都有 50Mbit 的光纤链路,但往返时间很可怕,从正常情况下的 450 毫秒到糟糕一天的 750 毫秒不等。

最初,我尝试通过 VPN 连接拉取文件,但在几次传输失败(smb 确实在慢速链接上很糟糕)并且速度达到最大约 128kBps 后,一个快速的谷歌显示我遇到了 Windows TCP 窗口缩放问题。

从那以后,我通过商业私有云类型服务推送文件,该服务更快地将文件发送到这里,因此以下内容更多是出于好奇心。

更有趣的是,两端的互联网访问都是通过 http 代理进行的。但是,我在两端的机器上都拥有管理员权限。

你将如何获得更好的速度?

我尝试过的事情:

1)两台linux虚拟机之间的普通SFTP,使用corkscrew打孔通过http代理和第三个中介将两端连接在一起。达到的速度:大约 600kBps。

2) SFTP 但使用用 HPN-SSH 修补的 OpenSSH。开瓶器和中间配置与 1) 相同。几乎没有速度提升。

3) 按照 2 但使用 LFTPpget -c -n 10将传输分成块。这是迄今为止最好的,看到 3.5MBps ...

欢迎所有改进。

linux ssh ssh-tunnel

8
推荐指数
2
解决办法
6048
查看次数

使用 firewall-cmd 进行 ssh 端口转发

我正在尝试通过 ssh 隧道连接到 NAT 后面的服务器:

从笔记本电脑 ssh --> 在防火墙中使用端口转发的主机 --> 直接进入来宾(172.16.0.2,在主机 NAT 后面)。

在主机上使用 iptables - 它会起作用:

# iptables -I OUTPUT  -d 0.0.0.0/0 -j ACCEPT
# iptables -I FORWARD  -d 0.0.0.0/0 -j ACCEPT
# iptables -I INPUT  -d 0.0.0.0/0 -j ACCEPT
# iptables -t nat -I PREROUTING -d 0.0.0.0/0 -p tcp --dport 222 -j DNAT --to-destination 172.16.0.2:22
Run Code Online (Sandbox Code Playgroud)

但是,主机重启时不会保存 iptables,因为 firewalld 服务正在运行(firewalld 是 RHEL 7 中的默认设置)。

所以我正在尝试使用 firewall-cmd进行相同的端口转发

在主机上使用 firewall-cmd - 它不起作用:

# firewall-cmd --permanent --zone=public …
Run Code Online (Sandbox Code Playgroud)

linux port-forwarding ssh-tunnel firewalld

7
推荐指数
2
解决办法
2万
查看次数