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即可。

相关推荐
gggg远2 小时前
docker详解
运维·docker·容器
ALex_zry4 小时前
Consul全方位入门指南:第二阶段—— 实操。Consul核心功能与项目集成
运维·docker·微服务·云原生·架构
热爱学习的小怪兽5 小时前
Docker容器的一些总结
运维·docker·容器
❀͜͡傀儡师6 小时前
Docker一键部署Nexus Terminal,高颜值SSH新体验
docker·容器·ssh
TH_17 小时前
腾讯云-(10)-宝塔面板-Docker下安装Elasticsearch
elasticsearch·docker·容器
面对疾风叭!哈撒给8 小时前
Docker之 Portainer、Node-RED和EMQX安装与配置
运维·docker·容器
kbirdg8 小时前
告别卡顿!内网服务器如何“优雅”地搬运 Docker 镜像?除了 docker save,你该试试这几招
docker
小吃饱了8 小时前
docker制作镜像
运维·docker·容器
Radan小哥8 小时前
Docker学习笔记—day008
笔记·学习·docker