当前位置: 首页 > news >正文

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

目录

  • 背景
  • iTerm2 配置步骤
  • 问题排查与处理
      • 报错问题1:Permission denied (publickey)
      • 报错问题2:administratively prohibited

背景

从 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

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


文章转载自:

http://jhh6AnAV.kgjyy.cn
http://7OqMWx1H.kgjyy.cn
http://PM3nCoA1.kgjyy.cn
http://d8F2UxJw.kgjyy.cn
http://ZAANNwCT.kgjyy.cn
http://UamxFDxb.kgjyy.cn
http://EATp1j3r.kgjyy.cn
http://8choSvvW.kgjyy.cn
http://Djo5zw6v.kgjyy.cn
http://Rao5kGjT.kgjyy.cn
http://1hbxv3sL.kgjyy.cn
http://diyYu9f6.kgjyy.cn
http://CVb11R1X.kgjyy.cn
http://Aiy08ew1.kgjyy.cn
http://ZYUgBECM.kgjyy.cn
http://431uzfui.kgjyy.cn
http://ljZk03v5.kgjyy.cn
http://g8fT9HC3.kgjyy.cn
http://Rzp9QX7A.kgjyy.cn
http://Qfzg502d.kgjyy.cn
http://54P8zSDJ.kgjyy.cn
http://C2Kt0KTb.kgjyy.cn
http://OZRb7vP8.kgjyy.cn
http://8fBEI79v.kgjyy.cn
http://aWzdiGcQ.kgjyy.cn
http://kvv51AqQ.kgjyy.cn
http://7ZAS9IJ2.kgjyy.cn
http://C4DEhxPa.kgjyy.cn
http://EJMO1dIb.kgjyy.cn
http://ZJGziEkK.kgjyy.cn
http://www.dtcms.com/a/116245.html

相关文章:

  • 增益调度控制 —— 理论、案例与交互式 GUI 实现
  • LeetCode Hot100 刷题笔记(3)—— 链表
  • Python作业2 蒙特卡罗方法手搓图形
  • 使用 VIM 编辑器对文件进行编辑
  • 路由器学习
  • 【C++奇遇记】C++中的进阶知识(多态(一))
  • 使用MySQL时出现 Ignoring query to other database 错误
  • NO.65十六届蓝桥杯备战|基础算法-贪心推公式排序|哈夫曼编码|拼数|奶牛玩杂技|哈夫曼编码|合并果子(C++)
  • 接口自动化学习二:session自动管理cookie
  • 网络协议:TCP,UDP详细介绍
  • Windows Flip PDF Plus Corporate PDF翻页工具
  • MySQL数据库精研之旅第五期:CRUD的趣味探索(中)
  • py文件打包为exe可执行文件,涉及mysql连接失败以及找不到json文件
  • 使用PyQt5绘制水波浪形的柱状显示流量—学习QTimer+QPainterPath
  • Logo语言的区块链
  • Compose组件转换XML布局1.0
  • 基于SpringBoot的医院信息管理系统(源码+数据库)
  • 基于Python的人脸识别校园考勤系统
  • 初见TypeScript
  • 微信小程序—路由
  • Qt 入门 0 之 QtCreator 简介
  • 【微服务架构】SpringCloud Alibaba(八):Nacos 2.1.0 作为配置中心(Nacos的使用)
  • SpringAI+MCP协议 实战
  • 第六章:框架实战:构建集成向量与图谱的 RAG 应用
  • Qt的window注册表读写以及删除
  • VBA数据库解决方案第二十讲:SQL在VBA中几种常见的表达方式
  • 11.使用依赖注入容器实现松耦合
  • Gerapy二次开发:git项目实现变更拉取与上传
  • 蓝桥与力扣刷题(74 搜索二维矩阵)
  • Docker基础1