情况: 我想通过 HTTPS 建立 SSH 会话隧道。我有一个非常严格的防火墙/代理,它只允许 HTTP、FTP 和 HTTPS 流量。
什么工作: 通过代理建立一个隧道到一个远程 linux 机器,在端口 443 上有一个 sshd 监听
问题: 我必须在端口 443 上运行一个 Web 服务器(轻量级)。代理禁止到其他端口的 HTTPS 流量。
到目前为止的想法: 设置虚拟主机并将所有传入请求代理到本地主机:(例如22)
$HTTP["host"] == "tunnel.mylinux.box" {
proxy.server = (
"" => (("host" => "127.0.0.1", "port" => 22))
)
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这行不通。我做错了什么,还是有原因,这行不通?
Local Computer (Fedora) --SSH--> Server1 --SSH--> Server2
Run Code Online (Sandbox Code Playgroud)
在我工作的某些环境中,我们必须使用“跳转框”,您可以通过 ssh 连接到一台服务器,以便到达另一台服务器。有没有一种快速的方法可以做到这一点,也许是通过编辑 ~/.ssh/config,这样每当我从本地计算机 ssh 到 Server2 时,它都会自动创建到 Server1 的必要连接?我可以设置密钥,以便在必要时不会提示我输入 Server1 的密码。
我正在阅读http://nfs.sourceforge.net/nfs-howto/ar01s06.html试图理解为什么当我到达“6.4. 通过 SSH 隧道传输 NFS”部分时 localhost 导出很糟糕。该部分中关于导出本地主机的可能安全漏洞的所有内容,因为它允许其他人通过 ssh 端口转发并访问共享是有意义的。
这是我的问题,如果用户可以通过 ssh 连接到可以连接到 NFS 服务器的机器,如何防止 ssh 隧道破坏系统的安全性?例如,想象一下计算机 A( 192.168.1.1)、B( 192.168.1.2) 和 C( 192.168.1.3)。让 A 成为具有以下导出文件的服务器:
/home 192.168.1.2(rw)
Run Code Online (Sandbox Code Playgroud)
如您所见,A 授予 B 使用 /home 共享的权限。现在,让 C ssh 进入 B:
$ ssh 192.168.1.2 -L 250:192.168.1.1:2049 -f sleep 60m
$ ssh 192.168.1.2 -L 251:192.168.1.1:32767 -f sleep 60m
Run Code Online (Sandbox Code Playgroud)
似乎 A 的股票出口到 B 容易受到任何可以通过 ssh 进入 B 的人的攻击。是这种情况吗?除了简单地确保可以登录到 B 的任何人都是非常值得信赖的用户之外,还有什么方法可以防止这种情况发生?
在生产中的远程服务器之间以 ssh-copy-id 的形式复制 SSH ID,以便它们可以更轻松地彼此执行各种 SSH 任务,这是一种好习惯吗?
特别是,我正在设置 SSH 隧道,并且不想查找那些服务器设置的非常神秘的密码。如果我在参与的服务器之间 ssh-copy-id,这是否存在安全风险?
我有一个基于 linux 的设备(假设是一个 Raspberry Pi),它托管一个 HTTP 服务器。此设备会定期更改 WiFi 接入点,并且由于 NAT 和/或防火墙的原因通常无法公开访问。
我想使用公开可用的服务器(rpi.example.com如下)设置反向 ssh 隧道,rpi behind NAT以便rpi.example.com在启动时建立隧道。rpi.example.com然后将任何 HTTP 请求转发到rpi behind NAT.
时序图:
HTTP client rpi.example.com rpi behind NAT
+ + +
| | ssh -R |
| | <-----------------+
| GET /temp | |
+-----------------> | |
| +-----------------> |
| | [SSH tunnel] |
| | <-----------------|
| HTTP/1.1 200 OK | |
| <-----------------+ |
| | |
Run Code Online (Sandbox Code Playgroud)
如何设置这样的反向 …
我正在尝试通过 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) 我有一个正在工作的应用程序服务器,它只能接受来自本地主机的 http 请求。
在家里我通过 ssh 访问服务器。一旦进入服务器我就可以curl http://localhost/test.html
我想在家里的网络浏览器上执行相同的操作,即以某种方式通过 ssh 重定向我的浏览器流量并访问 test.html,就像我在服务器上一样。
我尝试ssh -v -D 9090 user@xx.xx.xx.xx过,在 Firefox 中通过 SOCKS v5 主机设置手动代理后:在 ip: 127.0.0.1 和端口 9090 上
我看到 ssh 调试中发生了一些事情,但看起来没有重定向到 80 服务器端口
我知道我可以使用 ssh 隧道在我的机器上创建一个“代理”,这样我就可以让本地生成的所有流量通过远程服务器。像这样:
$ ssh -D 12345 myuser@remote_ssh_server
Run Code Online (Sandbox Code Playgroud)
但是如果我需要在远程服务器上创建一个“代理”,以便我发送的所有流量都将通过我的本地机器呢?这可以通过 ssh 实现吗?
本质上,我想使用我的本地互联网连接和一些特定命令来远程运行,因为服务器无法直接访问互联网。
我正在使用 RDP 从一台 Windows 机器连接到另一台机器。我想localhost:81通过本地 IP 地址上的内部网络将流向远程机器的流量转发到远程机器可访问的机器,比方说10.90.228.163。所以我想要 TCP 流量:
client --> localhost:81 --> [rdphost] --> 10.90.228.163:81 --> server
Run Code Online (Sandbox Code Playgroud)
使用 OpenSSH 和 PuTTY,我可以使用本地端口转发来做到这一点;将本地端口转发81到10.90.228.163:123. 有没有办法用 RDP 来做到这一点?
我正在使用这个 ssh 命令:
ssh -fnN -L $LOCALPORT:$REMOTEHOST:$REMOTEPORT $HOST
这会在后台创建我的 ssh 连接,并通过另一台主机将该端口转发到远程主机。这很棒,并且允许我通过连接到可以访问两个网络的服务器来在防火墙后面使用我的服务。
完成后我需要停止此 ssh 连接,但我不确定如何。