V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  uncat  ›  全部回复第 12 页 / 共 24 页
回复总数  467
1 ... 8  9  10  11  12  13  14  15  16  17 ... 24  
2021-05-22 22:46:27 +08:00
回复了 chenqh 创建的主题 Python ssh 可以设置常用地登录吗?
> <username1> 是登陆服务器的地址.

纠正为: <username1> 是登陆服务器的用户名
2021-05-22 22:44:56 +08:00
回复了 chenqh 创建的主题 Python ssh 可以设置常用地登录吗?
本地维护一份 ~/.ssh/config 配置. 将 git 仓库中的 config 文件软链到 ~/.ssh/config. 然后 config 就可以版本控制了.
然后. 用如下的配置模板为每个项目的服务器添加一份配置.

Host project-1
User <username1>
HostName <IP1>
ProxyJump <username2>@<IP2>

project-1 是一个 nickname.
<username1> 是登陆服务器的地址.
<IP1> 是服务器的 IP.
<username2> 是 ssh 登陆跳转服务器的地址.
<IP2> 是跳转服务器的 IP.
添加了这样的配置后. 登陆服务器. 以往的命令: ssh <username1>@<IP1> 就会变成 ssh project-1. 这里面 <username2>@<IP2> 对应的跳转服务器的作用是: 在你每次 ssh project-1 时, 流量都会先发给 <username2>@<IP2> 对应的跳转服务器, 由跳转服务器发出. 这样, 你所有的 ssh 登陆请求就会有一个固定的来源 IP 了. 这个 IP 就是 IP2(跳转服务器的 IP). 一般云服务商都一提供网络安全组. 将 22 端口设为只允许 IP 登陆即可.

最终你的 git 仓库中的 config 文件会变成下面的形式:

Host project-1
User <username1>
HostName <IP1>
ProxyJump <username2>@<IP2>

Host project-3
User <username3>
HostName <IP3>
ProxyJump <username2>@<IP2>

Host project-4
User <username4>
HostName <IP4>
ProxyJump <username2>@<IP2>

Host project-5
User <username5>
HostName <IP5>
ProxyJump <username2>@<IP2>

# 类似上面的形式. 每次有新的项目. 就添加一个块. 然后推送到远程仓库. 让其他小伙伴拉取这个仓库. 添加软链接到 ~/.ssh/config 即可.
2021-05-14 14:45:14 +08:00
回复了 aaatches 创建的主题 macOS 关于 tmux 提问两个问题
2021-05-14 14:38:00 +08:00
回复了 saytesnake 创建的主题 程序员 无外网的内网机器,如何正确实现内网穿透?
@saytesnake 是的. 如果你是为了远程访问 RDP 协议还好. 如果 B 这台是 Windows 的确就不好搞了.
2021-05-14 14:36:50 +08:00
回复了 saytesnake 创建的主题 程序员 无外网的内网机器,如何正确实现内网穿透?
因为 FRP 映射的 SSH 端口是完全公网不可见的. 因此, 这里的安全性也是相对可靠的. FYI @kav2007
2021-05-14 14:34:45 +08:00
回复了 saytesnake 创建的主题 程序员 无外网的内网机器,如何正确实现内网穿透?
@no1xsyzy 是的, 我理解错了楼主关于: `内网 B 服务器(内外网均可访问)' 的意思, 以为 B 有公网 IP.

如果是 B 没有公网 IP, 但可以访问内网和公网. 有一台具备公网 IP 的服务器 C. 解决思路:

1. 将 B 的 22 端口通过 FRP 绑定到 C 上, 假设是 C 上的 1428 端口
2. C 服务器禁止公网访问 1428 端口
3. 添加如下配置到如下路径的文件最前面:`~/.ssh/config`, 请根据具体情况更新尖括号内的内容

Host c
User <C 的用户名>
HostName <C 的公网 IP 地址>

Host b
User <B 的用户名>
HostName 127.0.0.1
Port: 1428
ProxyJump c

Host database
User <A 的用户名>
HostName <A 的内网 IP 地址>
ProxyJump b
LocalForward 127.0.0.1:13306 127.0.0.1:3306

4. 打开两个命令行窗口
5. 在窗口 1 执行: `ssh database`,保持窗口 1 登陆连接的状态. 在窗口 2 执行: `nc -vz localhost 13306`
6. 如果窗口 2 显示 connected. 就可以了
7. 你本地访问 13306 就等于访问 A 的 3306 了
2021-05-14 11:52:57 +08:00
回复了 saytesnake 创建的主题 程序员 无外网的内网机器,如何正确实现内网穿透?
这是 SSH 自带的功能. 详细请阅读: `man ssh_config` 中关于: ProxyJump 和 LocalForward 两个 options 的文档. 软一峰先生关于 SSH 的文章也可以读一下: https://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
2021-05-14 11:50:18 +08:00
回复了 saytesnake 创建的主题 程序员 无外网的内网机器,如何正确实现内网穿透?
PS:
1. 这份配置是添加到你本地.
2. 你需要添加你的公钥到 A 服务器和 B 服务器.
2021-05-14 11:47:33 +08:00
回复了 saytesnake 创建的主题 程序员 无外网的内网机器,如何正确实现内网穿透?
配置示例:

Host database
User todo
HostName 192.168.1.100
ProxyJump todo@todo
LocalForward 127.0.0.1:13306 127.0.0.1:3306

好处:
生产环境不需要依赖任何第三方的工具. 避免生产环境的污染带来的安全风险. 基于 SSH 的密钥验证的安全性保证. 安全可靠.
2021-05-14 11:43:45 +08:00
回复了 saytesnake 创建的主题 程序员 无外网的内网机器,如何正确实现内网穿透?
基于 SSH 即可.
1. 配置 B 基于密钥 SSH 登陆
2. 配置 A 基于密钥 SSH 登陆
3. 添加如下配置到如下路径的文件最前面:`~/.ssh/config`, 请根据具体情况更新尖括号内的内容

Host database
User <A 的用户名>
HostName <A 的内网 IP 地址>
ProxyJump <B 的用户名>@<B 的公网 IP 地址>
LocalForward 127.0.0.1:13306 127.0.0.1:3306

4. 打开两个命令行窗口
5. 在窗口 1 执行: `ssh database`,保持窗口 1 登陆连接的状态. 在窗口 2 执行: `nc -vz localhost 13306`
6. 如果窗口 2 显示 connected. 就可以了
7. 你本地访问 13306 就等于访问 A 的 3306 了
2021-04-22 21:01:49 +08:00
回复了 mianwei 创建的主题 全球工单系统 微信还卖人手机号码?
巧了.
2021-03-28 12:34:32 +08:00
回复了 PUBG98k 创建的主题 分享创造 团队奋斗了 1 年,首个稳定版发布了 ToDesk
供参考的 SSH alias:

Host alias
User pi
Port 6003
HostName 127.0.0.1
PermitLocalCommand yes
LocalCommand $HOME/.bin/rdp remote-m4
ProxyJump [email protected]
LocalForward 127.0.0.1:3389 192.168.0.195:3389

这份配置需要根据你本地的具体情况. 调整好后才能用(仅供参考. 不能直接照搬). $HOME/.bin/rdp 是我本地的脚本. 内容大概是:

rdesktop -g 100% -K -m -M -P -z -x m -r sound:off -u jinmiaoluo -p ' ' -r clipboard:PRIMARYCLIPBOARD localhost:3389 &>/dev/null &
2021-03-28 12:26:20 +08:00
回复了 PUBG98k 创建的主题 分享创造 团队奋斗了 1 年,首个稳定版发布了 ToDesk
开源方案的思路:

Windows: FRP + SSH + RDP
Linux: FRP + SSH + VNC

1. FRP 暴露内网 SSH 到公网服务器上.
2. 公网服务器用安全组保护内网 SSH 的端口.
3. 本地用 SSH 的 ProxyJump 功能做公网服务器上的流量转发, 实现公网服务器上在不暴露内网 SSH 的端口的情况下, 实现安全的远程内网 SSH 登陆(安全性由公网服务器的公钥 /私钥验证来保证).

网络拓扑:
本地 <----公钥 /私钥验证 ----> 服务器 SSH 服务 <---- 转发流量 ----> 转发流量到服务器上的内网 SSH 端口

4. 实现远程 SSH 登陆后, 利用内网 SSH 服务将同在内网的其他主机的 RDP/VNC 端口转发到本地.

网络拓扑:
本地 <---- 私钥验证 ----> 内网的 SSH 服务(这里省略公网流量拓扑) <---- 转发流量 ----> 内网的设备

5. 阅读 OpenSSH 的 ssh_config 相关的 manual. 写一份 SSH alias 配置, SSH 读取本地的 `$HOME/.ssh/config` 中的 alias 配置, 调起本地的远程桌面管理程序. 发起对转发回来的 RDP/VNC 端口的访问. 完成.

最终效果:

在命令行执行一行命令 `ssh alias` 既可.

成本:
1. 内网 SSH 服务运行环境. 比如: 树莓派一台.
2. 一台公网可达的服务器. 构建 FRP 服务. 完善安全组.
3. 阅读 OpenSSH 的 ssh_config 相关的 manual. 授权 /转发 /本地打开远程管理程序并建立连接的所有操作都是通过 SSH 的 alias 配置来实现. 你需要看 SSH 的 LocalCommand / LocalForward 等功能的用法. 编写本地的 `$HOME/.ssh/config`, 提供对应的 alias 配置. 即可实现最终的效果.
Home: 基于 Arch Linux 的矿机 * 4 台 /基于 Arch Linux 的备份服务器 * 1
Work: 基于 Ubuntu 的云服务器 * 很多
Laptop: 基于 Arch Linux 的 ThinkPad * 1
1 ... 8  9  10  11  12  13  14  15  16  17 ... 24  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2802 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 07:00 · PVG 15:00 · LAX 23:00 · JFK 02:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.