此文章欢迎访问我的个人博客:https://qiandao.space/archives/portmapping
mac端ssh连接win
mac端ssh连接win上的linux虚拟机
win端ssh连接mac
日常开发时要开一些虚拟机或是其他的一些服务,全都放在一台电脑上压力有点大,就想着能不能把某些服务开在其他电脑上,这样用一台电脑去连接,毕竟都在一个局域网内,想着也能实现,就去查了一些资料,结果零零散散的,很多都是失败的,尤其是用mac连接win上的linux虚拟机,怎么查也查不到。。。
系统说明
- macOS13.1
- windowns11
- Centos7(win内部虚拟机,使用VMware)
一、前置条件
ip查看
mac与win同在一个局域网内,比如连接到同一个Wi-Fi
-
查看win的ip为
192.168.0.5
ipconfig
-
查看mac的ip为
192.168.0.7
关闭防火墙
此时直接互相ping是ping不通的
- 关闭win防火墙
在设置中的搜索栏进入
或是在控制面板关闭防火墙即可
- 关闭mac防火墙
转到设置->网络,可以看到防火墙时默认打开的,这里关闭即可
此时再互相ping发现可以ping通
这样才可以进行下面的操作
二、win端ssh连接mac
mac上默认安装了ssh服务,但是没有启用
转到设置->通用->共享,打开远程登录即可
此时可以在终端中验证:
sudo systemsetup -getremotelogin
On代表ssh服务已开启
或者直接使用命令开启:
sudo systemsetup -setremotelogin on
此时可以用ssh连接到你的Mac
在win上下载ssh客户端工具,这里使用
Termius
,普通版并不收费,同时自带sftp工具
端口号默认是22,输入ip、用户名、密码即可
用户名可以在访达中查看:
连接成功,用于mac比较像linux,所以大多命令与linux都是互通的
同样通过sftp工具可以访问mac上的任意文件,实测局域网下的速度大概能达到6MB/s左右
三、mac端ssh连接win
首先在win上安装openSSH工具
进入设置->应用->可选功能->添加可选功能->选择OpenSSH服务器,下载即可
但是这里我安装提示失败,所以提供另一种方式手动安装
转到https://github.com/PowerShell/Win32-OpenSSH/releases,下载其中的OpenSSH-Win64.zip
解压至指定位置
运行服务:
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
#要在管理员权限下运行
成功会提示三个成功!
之后启动sshd服务:
net start sshd
到此服务已经安装完毕,默认端口一是22,默认用户名密码为Window用户名和密码
同样在文件管理处查看最准确:
连接即可:
不过个人认为win的终端工具有点傻,简直不要太难用,所以这个基本没啥用,但是连上sftp传文件还是挺方便的
四、mac端ssh连接win上的linux虚拟机
首先,如果虚拟机的网络使用的是桥接模式,则虚拟机将分配与物理网络中的其他设备相同的IP地址,可以通过ifconfig查看,比如可能是
192.168.0.8
。因此,可以像连接win一样连接到虚拟机,这样后面就没啥可说的了。
如果使用的是NAT模式,则就要配置一番了!
在NAT模式下,虚拟机使用虚拟网络适配器连接到win的虚拟网络中,意味着虚拟机的IP地址和端口与win和win所在的物理网络不相关,所以无法通过物理网络直接访问虚拟机。
为了使win和物理网络上的其他设备即我的mac能够访问虚拟机,我们要配置端口映射,端口映射就将win主机上的一个端口映射到虚拟机的一个端口上。当win主机或其他设备比如mac连接到映射的端口时,请求将转发到虚拟机的相应端口,从而实现与虚拟机的通信。
理解了原理,我们来实操一下!
首先端口映射是从VMware 6.5版本后才开始引入的功能,现在应该没有人还在用这么老的版本吧。。。
- 点击编辑->虚拟网络编辑器
- 选中NAT模式->点击更改设置
- 选中NAT模式->点击NAT设置
-
可以看到
-
点击添加,按照提示填写即可
一直确定即可!
通过工具可连接win内部的虚拟机:
到这里就配置好了,但是每次重启网络后每台电脑包括虚拟机的ip都会变化,因此我们可以配置静态ip,其中比较好配置的就是虚拟机的ip的,因为NAT本来就是虚拟网络,物理网络中是不存在的。
编辑此文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
设置内容(更改下文有注释的即可):
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static" #改为static网络
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="0bc8ccc6-3633-4d26-b522-14c79f744014"
DEVICE="ens33"
ONBOOT="yes" #改为yes,系统启动的使用网络接口有效
IPADDR=192.168.162.130 #指定的静态ip,注意前缀和网关一样
GATEWAY=192.168.162.2 #网关,可在WMware中查看
DNS1=8.8.8.8 #域名解析器
之后重启网络服务或重启系统即可生效:
service network restart #重启网络服务
reboot #重启系统
那有如何配置每台电脑的局域网ip为静态呢?本文就不做介绍了,当然不配置的话也行,更方便一点的做法是在hosts文件里映射一个电脑名称,后面应用这个名称,每当ip变化的时候修改hosts文件中的ip即可。