Windows/Mac 通过跳板机连接服务器(1)
背景
临时起意,向公司申请将 windows笔记本 更换为 MacBook Pro, 之前一直使用 xshell + xftp 进行终端登录和数据传输。于是开始探索xshell+xftp 在 Mac 上的替代品。
windows xshell 上的隧道和代理设置
此处略过填写堡垒机信息和用户身份验证的过程…
先在堡垒机上设置隧道:
此处略过填写服务器信息和用户身份验证的过程…
然后在要登陆的服务器上设置代理:
探索 mac 上的相似方式
-
完全仿照 xshell 上的方式:
登陆堡垒机的时候采用动态转发的方式建立隧道:ssh -D 1080 bastion.user@bastion.ip
然后利用这个隧道进行目标机器的登陆:
ssh -o ProxyCommand="nc -X 5 -x localhost:1080 %h %p" host.user@host.ip
-
vim ~/.ssh/config
Host bastion Hostname bastion.ip Port 22 User bastion.user Host host Hostname host.ip Port 22 User host.user ProxyCommand ssh -q -x -W %h:%p bastion
此时需要输入两次密码:
uesr@ZBMac-C02G14F5MD .ssh % ssh host bastion.user@bastion.ip's password: host.user@host.ip's password: Last login: Mon Nov 1 17:09:14 2021 from 172.20.xxx.127
那么我们利用 expect 脚本来设置自动登录:
vim server#!/usr/bin/expect set timeout 30 spawn ssh [lindex $argv 0] expect { "(yes/no)?" {send "yes\n";exp_continue} "password:" {send "[lindex $argv 1]\n"} } expect { "password:" {send "[lindex $argv 2]\n";} } interact
运行
expect ./server host bastion.passwd host.passwd
可以在iterm2中利用profile设置为类似xshell中的那样一键登录:-
选择Command,要用expect 执行:
-
选择 Login Shell,要赋予 server 权限,如
chmod 777 ./server
:
-
至此,相当于完成了Mac上的 xshell 设置。