【教程】MacBook 使用 iTerm2 连接跳板机和开发机

背景

从 Windows 笔记本更换到 MacBook,需要迁移远程连接配置,Windows 上使用的是 Xshell(参见【教程】Windows下 Xshell 连接跳板机和开发机),Mac 看大家推荐比较多的是 iTerm2,遂装之。

远程连接需求:通过密钥连接跳板机,再从跳板机通过密钥连接开发机。

iTerm2 配置步骤

  • Step1:在 ~/.ssh/ 目录下新建 config 文件,内容格式如下:
Host jumper # 给跳板机取个名字
	HostName xxx.xxx.com  # 填跳板机的IP 
	User zhangsan         # 填登陆跳板机的用户名
	port 22               # 填跳板机端口号
	IdentityFile /Users/xxx/xxx/ssh/id_rsa # 填登陆跳板机所使用的密钥文件的本机路径 

Host dev_name # 给开发机取个名字  
	HostName 12.3.456.789 # 填开发机的IP 
    PermitLocalCommand yes
	User lisi             # 填登陆开发机的用户名
	port 22               # 填开发机端口号
	IdentityFile /Users/xxx/xxx/ssh/another_id_rsa # 填登陆开发机所使用的密钥文件的本机路径
    ProxyCommand ssh jumper -W %h:%p # !!重要!! 
    ServerAliveInterval 10

在 iTerm2 终端测试下是否生效:

cd ~
ssh dev # 登陆跳板机
cd ~
ssh dev_name # 登陆开发机

如果登陆跳板机出现报错,常见情况是:密钥文件路径有没有误、格式有没有问题;如果需要内网才能访问,确认有没有连接内网或挂VPN;

如果登陆开发机有问题,请移步本文【问题排查与处理】;

都没有问题再进行下一步。

  • Step2:如果不想每次都通过命令行登陆,可以配置 iTerm2 Profiles:
    • Profiles -> Open Profiles… -> Edit Profiles…
      在这里插入图片描述
      在这里插入图片描述
    • 点击 + 新建一个 Profile,
      • 给 Profile 取个名字,比如跳板机就叫 jumper,开发机就叫 dev;
      • 在 Send text at start 处填 Step1 中的连接命令,例如连接跳板机就是 ssh jumper,连接开发机就是 ssh dev_name
        在这里插入图片描述
  • 设置完成就会出现在 Profiles 下,点击即可连接:

在这里插入图片描述

问题排查与处理

报错问题1:Permission denied (publickey)

我一开始直接把 Windows 电脑上 VScode 使用的 config 文件复制过来,跳板机的配置一样,开发机配置关键的 ProxyCommand 那行不一样:

Host jumper # 给跳板机取个名字
	HostName xxx.xxx.com  # 填跳板机的IP 
	User zhangsan         # 填登陆跳板机的用户名
	port 22               # 填跳板机端口号
	IdentityFile /Users/xxx/xxx/ssh/id_rsa # 填登陆跳板机所使用的密钥文件的本机路径 

Host dev_name # 给开发机取个名字  
	HostName 12.3.456.789 # 填开发机的IP 
	User lisi             # 填登陆开发机的用户名
	port 22               # 填开发机端口号
	IdentityFile /Users/xxx/xxx/ssh/another_id_rsa # 填登陆开发机所使用的密钥文件的本机路径
    ProxyCommand ssh.exe -p 22 zhangsan@xxx.xxx.com nc %h %p # 注意这行不一样

报错如下:

zsh:1: command not found: ssh.exe
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

将最后一行的 ssh.exe 改为 ssh

ProxyCommand ssh -p 22 zhangsan@xxx.xxx.com nc %h %p

还是报错,如下:

zhangsan@xxx.xxx.com: Permission denied (publickey).
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

最后修改成如下之后,成功连接了:

ProxyCommand ssh jumper -W %h:%p

报错问题2:administratively prohibited

如果还是不行,出现如下报错:

channel 0: open failed: administratively prohibited: open failed
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

在这里插入图片描述

可以尝试修改成如下:

ProxyCommand ssh -p 22 jumper nc %h %p

-------- 完结 --------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值