ssh远程访问另一台windows(可扩展到docker环境)

windows系统操作设置

OpenSSH安装

首先你ping一下windwos电脑,如果你在同一个局域网,但是ping不同,那么可能是企业网络/校园网/等不允许横向流浪访问!,那么不能单使用ssh了。

检查是否安装了OpenSSH.server,可以好使用下面命令在powershell管理员模式下测试:

bash 复制代码
 Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'

出现下面情况说明没有安装:

bash 复制代码
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

安装openssh.server:

bash 复制代码
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

如果一直这样说明卡死了,毕竟这组件也才几个MB而已。那么可以换一种方式下载。

在这里下载对应版本:OpenSSH-server下载地址

加压后将文件放在:C:\Program Files\OpenSSH 就十几个MB无所谓了,省的一顿操作改到D盘。

然后开始安装:

bash 复制代码
 C:\Program Files\OpenSSH-Win64>

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

启动并检查状态,如果是running就是一切正常:

bash 复制代码
(base) PS C:\Program Files\OpenSSH-Win64> Start-Service sshd
(base) PS C:\Program Files\OpenSSH-Win64> Get-Service sshd

Status   Name               DisplayName
------   ----               -----------
Running  sshd               OpenSSH SSH Server

利用下面命令测试ssh是否可登录:

bash 复制代码
ssh localhost
bash 复制代码
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes

ipconfig 命令查看该电脑的ip地址。

可以用下面命令查看自己电脑的用户名:

bash 复制代码
whoami
desktop-5m05baq\XXXX

// XXXX就是你的登录用户名

还可以通过下面命令修改你的ssh登录命令:

bash 复制代码
net user XXX 新密码

然后ssh链接就可以了

如果是开头说的拒绝横向流量访问,那么需要借助第三方工具了。

ZeroTier 虚拟局域网

配置

ZeroTier 是目前最简单、最稳定、最容易上手的 虚拟局域网(VLAN/VPN)解决方案

我的 Mac 和 Windows 加入同一个 ZeroTier 网络后,就像在同一个家用路由器下一样,可以:

  • ✔️ 互相 ping 通

  • ✔️ SSH 连接

  • ✔️ Mac 控制 Windows Docker

  • ✔️ 不受校园网/公司网的局域网隔离影响

而且 全免费配置超简单

  1. 点击zerotier.com注册并创建network

  2. 分别在mac和windwos上下载zerotier

  3. 然后加入网络,输入nerwork id即可

  4. 加入网络后要在后台授权

解决网络阻断

配置好以后,你可能会遇到,ping可以通,但是ssh XXX@ip_address是被阻断的(ssh之后是空白无输出停滞)。这说明Mac → ZeroTier → Windows 的 TCP 22 被屏蔽,ZeroTier 的 TCP 流量被彻底阻断(连 SYN 包都发不过去)。

接下来执行下面命令,把 ZeroTier 虚拟网卡改成"Private(专用网络)":

查看NetworkCategory 现在八成是:public

bash 复制代码
Get-NetConnectionProfile

改为private:

bash 复制代码
Set-NetConnectionProfile -InterfaceAlias "ZeroTier One *" -NetworkCategory Private

查看已经变为private

bash 复制代码
Get-NetConnectionProfile

放行 ZeroTier 接口的 SSH 端口(22)

bash 复制代码
New-NetFirewallRule `
  -DisplayName "ZT-SSH" `
  -Direction Inbound `
  -LocalPort 22 `
  -Protocol TCP `
  -InterfaceAlias "ZeroTier One*" `
  -Action Allow

重启ssh服务

bash 复制代码
Restart-Service sshd

然后mac测试:

bash 复制代码
nc -vz XXX.XXX.XXX.XXX 22

就通了,会显示succeede!

然后通过ssh就可以直接链接了:

bash 复制代码
ssh XXX@ip_address

输入账户密码就可登录进去了。

如果出现其他问题直接问LLM即可,他会帮助你解决的。这里密码试了半天都不行,才发现我用的是微软账户,所以就得用微软账户的密码。

两台电脑的zerotier服务必须后台运行,否则无法继续访问,但是你可能会发现,关掉后太仍然可以呀,你关掉的只是ui而不是服务进程,windows进程再这里:

Mac的在这:/Library/Application Support/ZeroTier/One/zerotier-one

他们不会随UI的关闭而结束。

访问docker环境web

直接将docker的端口映射到宿主机的端口,mac在访问的时候直接访问ip:port即可。

相关推荐
_运维那些事儿16 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
lpruoyu18 小时前
【Docker进阶-05】Docker网络
网络·docker·容器
三块钱079421 小时前
群晖docker部署Mattermost,对接openclaw
运维·docker·容器
苦逼IT运维1 天前
从 0 到 1 理解 Kubernetes:一次“破坏式”学习实践(一)
linux·学习·docker·容器·kubernetes
萧曵 丶1 天前
Docker 面试题
运维·docker·容器
为什么不问问神奇的海螺呢丶1 天前
n9e categraf docker 监控配置
运维·docker·容器
青树寒鸦1 天前
wsl的docker备份mongo和迁移
运维·mongodb·docker·容器
hopsky1 天前
Docker Desktop 报 500
运维·docker·容器
曦云沐1 天前
一键部署ROS2开发环境!Docker run命令详解与实战
docker·容器·ros2
H Journey1 天前
Docker swarm 集群搭建实战
运维·docker·容器