如何通过跳板机无缝连接需要跳转的服务器?
source link: https://www.v2ex.com/t/791209
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
A, B, C, D.... 均是 linux 服务器
mrxun1998 2 天前
两边都配置成密钥登录的话一条命令就能通过 A 登录 B 了
liyunyang 2 天前
公司的堡垒机限制太烦了,mac 环境被迫只能先远程 window 桌面,再连接 Linux 服务器
重点是 mac 的 Windows 远程桌面工具( Microsoft Remote Desktop )实在难用,被迫安装了 pd 虚拟机。。
神烦
shynome 2 天前 via Android
组网的话以 a 机器为中心,本机和 b, c, d 都连接到 a,连接成功后,本机和 a, b, c, d 都可以互相访问就像在同一个局域网内(记得选一个不冲突的网段
ye4tar 2 天前 4
假定本机的 ip 是 192.168.1.1,跳板机 windows (代号 A )是 192.168.2.1,生产机( BCD )是 192.168.3.1 、192.168.3.2 、192.168.3.3
先在 A 上使用 Windows 命令行配置端口映射如下
netsh interface portproxy add v4tov4 listenport=40022 connectport=22 connectaddress=192.168.3.1
netsh interface portproxy add v4tov4 listenport=50022 connectport=22 connectaddress=192.168.3.2
netsh interface portproxy add v4tov4 listenport=60022 connectport=22 connectaddress=192.168.3.3
然后本机想要连接 B 机器就是 ssh [email protected] -p 40022
然后本机想要连接 C 机器就是 ssh [email protected] -p 50022
然后本机想要连接 D 机器就是 ssh [email protected] -p 60022
yuanzi0 2 天前
ye4tar 2 天前
# 将 A 机 40022 端口的流量转发至 B 机器 192.168.3.1 的 22 端口
firewall-cmd --permanent --add-forward-port=port=40022:proto=tcp:toaddr=192.168.3.1:toport=22
注意
开启防火墙伪装:firewall-cmd --add-masquerade --permanent //开启后才能转发端口
其他问题请搜索 firewalld 端口转发
thet 2 天前
host jump
user xxxx
hostname xxx.xxx.xxx.xxx
port xxxx
identityfile jumpserver.pem
host server-a
user xxxx
hostname xxx.xxx.xxx.xxx
proxyjump jump
identityfile jump.pem
配置好后,用 ssh server-a 就可以直接登录了,可以搜一下 ssh proxyjump 用法
libook 2 天前
要是希望非 SSH 协议连到 B 、C 、D,可以在 A 上做几个映射到 B 、C 、D 上相应端口的转发规则,本地直接连接 A 上的对应端口就会自动被 A 转发到 B 、C 、D 上的特定端口上。这个可以去搜一搜 iptables 或者 SSH 隧道。
VPN 能让你的本机和 A 、B 、C 、D 在一个网络里,这样是最方便的,不用配置特定端口。
cpstar 2 天前
方法 2,端口映射,A 上开(比如 60022 、60122 、60222 之类)端口映射 B 、C 、D 的 22 。
方法 1 安全一些,毕竟只暴露 A 的 22,B\C\D 的 22 不直接暴露,但是就是每次建立的时候,费点劲;
方法 2 省事一些,直接连接连接
方法 1,用 ssh 命令实现;方法 2 在 A 上用 iptables 或者 firewall-cmd 实现。两者都需要打开 port-forwarding,具体找文章。
xylophone21 2 天前
libook 2 天前
如果你希望记录本地机对 BCD 的网络调用情况,可以开网络日志进行审计,但你只能审计到网络连接的建立和断开以及对应的端口情况。
如果是想知道具体做了哪些操作,就得做对应的协议的日志记录,比如 Shell 的日志、Web 日志。
如果 A 是堡垒机,那么用本机直接操作 BCD 就是个伪命题,堡垒机的存在就是为了不让你在本机操作 BCD 的,必须登录到堡垒机 A,然后在堡垒机上再连接 BCD 进行操作,堡垒机 A 负责记录你的所有操作,甚至还会有录屏。
安全和便利性是矛盾的,两者只能取其一。
beginor 2 天前 via Android
-p 2022 [email protected]`, 就是登录 b 了, 不用安装任何第三方软件
xuboying 2 天前
其实这就是一个 AB 问题,OP 根本没有讲清楚业务需求,直接要一个最全最广的方案,相应的就是安全性或者部署复杂度的牺牲。
xylophone21 2 天前
cpstar 2 天前
再说了,A 能 SSH,你能确保 ssh 到 A 的不打洞?一旦打动,任何所谓的审计措施全都失效。
libook 2 天前
所以主题里描述的需求是和堡垒机的价值相悖的,要么去除堡垒机 A 然后让 BCD 可以被自由访问,要么老老实实登录到堡垒机 A 上再登录 BCD 进行操作,没有第三种方案。
github2020 1 天前
mac -> linux 透明代理(搞个 r2s 之类便携的) -> A 上的 ssh 或 socks5 代理-> B/C/D
透明代理可以用 gost/glider 之类
Volekingsg 1 天前
大概步骤:
1. ssh -fnNT -D 1080 username@ip -p port
2. proxies 下面添加 socks 代理:
proxies:
- name: "name"
type: socks5
server: 127.0.0.1
port: 1080
udp: true
3. 添加策略组和规则
proxy-groups:
- name: local
type: select
proxies:
- name
- DIRECT
rules:
- 'IP-CIDR,192.168.14.14/32,local'
- 'IP-CIDR,192.168.14.16/32,local'
4. 另外 clashx 没有增强模式,需要给 ssh 配置代理,或者使用 clashx pro
Host *
...
Proxycommand nc -X 5 -x 127.0.0.1:7890 %h %p
...
Volekingsg 1 天前
Match exec "echo %h | grep '192\|124' | grep -q -v '208' && ! timeout 1 nc -z %h %p &> /dev/null"
ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p
jie123168 1 天前 1
```
#!/usr/bin/expect -f
set user [lindex $argv 0];
set password [lindex $argv 1];
set server [lindex $argv 2];
set ip 跳板机域名或 IP
set port 22
set timeout -1
spawn ssh -p $port $user@$ip
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*跳板机域名或 IP's password: " {
send "$password\r";
exp_continue
}
"*Last login*" { exp_continue}
"*Welcome to Alibaba Cloud*" { exp_continue}
"Enter code*" {
set code [gets stdin]
send "$code\r"
exp_continue
}
"*@跳板机主机名*" { send "ssh $server\r"; exp_continue }
"*'s ssh password*" {send "$password\r"}
}
interact
expect eof
```
这里面先登陆跳板机, 然后手动输入了动态验证码, 再通过 ssh 登陆真实服务器.
参数是跳板机的用户名, 密码. 及远程服务器的(主机名或 IP)
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK