如何通过跳板机无缝连接需要跳转的服务器?

2021-07-23 09:16:34 +08:00
 eggt
本机( mac 环境) 与跳板机 A 是通的,A 与 B, C, D ... 是通的,但 本机与 B,C,D 之间是不直通的,请教下,如何通过一些配置或工具,达到 本机全局情况下与 B,C,D 无缝连接(自动通过 A 中转连接)

A, B, C, D.... 均是 linux 服务器
8452 次点击
所在节点    程序员
51 条回复
Volekingsg
2021-07-23 19:42:41 +08:00
@eggt #34
Volekingsg
2021-07-23 19:45:43 +08:00
@eggt #34
大概步骤:
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
2021-07-23 20:38:37 +08:00
@Volekingsg #42 或者连接不上再走代理
Volekingsg
2021-07-23 20:39:01 +08:00
@Volekingsg #42 或者连接不上再走代理
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
eggt
2021-07-23 21:16:36 +08:00
@Volekingsg 感谢老哥,我下周试试
apeople
2021-07-23 21:40:43 +08:00
@liyunyang 我和你的情况简直一模一样,Microsoft Remote Desktop 经常连不上 mac 上的文件夹。
akira
2021-07-24 00:55:22 +08:00
跳板机就是让你 从跳板机去访问目标服务器的呀,还是你对跳板机理解有偏差了
yuruizhe
2021-07-24 02:11:43 +08:00
expect 脚本
jinwyp
2021-07-24 03:17:06 +08:00
wireguard linux 内核自带 可以用我的脚本安装 wget --no-check-certificate https://raw.githubusercontent.com/jinwyp/one_click_script/master/install_kernel.sh && chmod +x ./install_kernel.sh && ./install_kernel.sh
baoshuo
2021-07-24 09:54:37 +08:00
我用 Termius 解决这个问题,添加一个 Snippet 到主机的设置就行了
jie123168
2021-07-24 11:12:24 +08:00
用 expect 脚本, 我现在一直这么用的, 分享一个示例吧:
```
#!/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)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/791209

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX