admin 管理员组

文章数量: 887021

【SSH】在局域网或非局域网下 Windows10 配置 SSH 连接 Linux 服务器

  • 1 环境介绍
  • 2 服务端配置(Ubuntu20.04)
  • 3 客户端配置(Windows10)
    • 3.1 安装 OpenSSH
    • 3.2 生成密钥
    • 3.3 VSCode 配置
  • 4 部署公钥(免密登录)
  • 5 .ssh 文件夹中各个文件的作用
  • 6 非局域网内使用 ssh
    • 6.1 服务端(Ubuntu)配置
    • 6.2 客户端(Windows)配置

1 环境介绍

  • 服务端(被连接方):Ubuntu20.04
  • 客户端(连接方):Windows10VSCode

2 服务端配置(Ubuntu20.04)

  1. 安装 OpenSSH
sudo apt install openssh-server openssh-client
  1. 开启 ssh 服务
sudo systemctl enable ssh
  1. 查看 ssh 服务状态
sudo systemctl status ssh

3 客户端配置(Windows10)

官方文档:Link

3.1 安装 OpenSSH

  1. 打开设置,选择系统>可选功能

  2. 扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择添加功能

  • 查找OpenSSH 客户端,点击安装
  • 查找OpenSSH 服务器,点击安装
  1. 安装完成后,查看已安装功能中是否有 OpenSSH 客户端OpenSSH 服务器

在 Windows 终端中可执行的命令

  1. 启动 OpenSSH SSH Server(Optional)

当 Windows10 作为被连接方时,才需要启动 SSH Server

  • win + r,输入 services.msc 打开服务
  • 双击 OpenSSH SSH Server

  • 启动类型选择自动,服务状态选择启动,点击确定

3.2 生成密钥

  1. 打开终端输入

若不加 -t 参数,默认为 rsa

ssh-keygen -t ed25519
  • 选择生成密钥的路径,可以按 Enter 来接受默认值
  • 系统会提示你使用密码来加密你的私钥文件(这个密码要记住)

可以为空,但不建议这样做。 将密码与密钥文件一起使用来提供双因素身份验证。

  1. 生成 id_ed25519id_ed25519.pub 两个文件

3.3 VSCode 配置

  1. 安装 Remote - SSH 插件
  2. 加入远程服务器
  3. 配置 config 文件

大概内容如下:

Host: 自定义名称
HostName: 服务端 ip 地址或域名
User 服务端用户名
Port: 端口号(如果是 22,则不需要配置)

以上配置完成后,在终端执行 ssh Host,比如: ssh intel,即可连接。

  1. 开启连接

  2. 左下角可以看到已连接的标志,点击 open folder 可以访问服务端的文件系统

4 部署公钥(免密登录)

  1. 确保存在 .ssh 文件夹
# 可用于执行单个命令
ssh -p xxx HOSTNAME@ip mkdir ~/.ssh
  1. Windows Terminal 中执行
scp -P xxx C:\Users\USERNAME\.ssh\id_ed25519.pub HOSTNAME@IP:~

ssh -p xxx HOSTNAME@IP
cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys 
rm ~/id_ed25519.pub

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

如果完成了 3.3 小节中的 .ssh/config 文件配置 ,则同样可以用 HOST 代替 HOSTNAME@IP,比如: scp -P xxx C:\Users\USERNAME\.ssh\id_ed25519.pub intel:~

可以借助这个命令来传输一些文件,若传输文件夹,则加 -r 参数。

# 从本机到另一台电脑传输
scp -P xxx windows文件 HOSTNAME@IP:linux路径
# 从另一台电脑到本机传输
scp -P xxx HOSTNAME@IP:linux文件  windows路径
  1. 验证
ssh -p xxx HOSTNAME@IP

若不需要输入密码,即完成配置。

5 .ssh 文件夹中各个文件的作用

参考文章: Link

文件名功能
id_xxx经过 xxx 算法生成的私钥
id_xxx.pub经过 xxx 算法生成的公钥
authorized_keys存放需要免密登录的客户端公钥,实现免密连接
known_hosts记录访问过的计算机的公钥
config可以不用输入 HOSTNAME@ip,用其中的 Host 名代替

6 非局域网内使用 ssh

6.1 服务端(Ubuntu)配置

  • 查询硬件架构
arch
# output
# x86_64
uname -a
# output
# Linux localhost.localdomain 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
  • 下载花生壳

  • 安装

cd ~/下载
# 自己在官网复制
wget "https://down.oray/hsk/linux/phddns_5.2.0_amd64.deb" -O phddns_5.2.0_amd64.deb
sudo apt install phddns_5.2.0_amd64.deb
# 若存在依赖相关错误,则执行下面的命令
sudo apt install -f

下载完成后,会有如下输出(左下角的 SN 码有用):
也可以通过 phddns status 命令查询

  • 登录花生壳管理平台(上图中的地址信息)

第一次登录需要激活认证

  • 配置内网穿透
  1. 领取免费映射

  2. 新增映射

  3. 填写内网主机地址(即真实的 ip 地址)和端口(ssh 默认使用端口号 22

  4. 诊断,查看是否连接成功

6.2 客户端(Windows)配置

可以直接使用 ssh 命令进行连接

ssh -p xxx HOSTNAME@外网域名

简单配置一下免密连接

  • 传输公匙给服务端
scp -P xxx C:\Users\USERNAME\.ssh\id_ed25519.pub HOSTNAME@外网域名:~

ssh -p xxx HOSTNAME@外网域名
cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys 
rm ~/id_ed25519.pub

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

不想用命令也可以手动复制。

  • 配置 config 文件

Host: 自定义名称
HostName: 可以是 ip 地址,也可以是域名
Port: 端口号

  • 连接测试

使用 ssh 命令连接

ssh -p xxx orb_out

使用 VSCode 连接

本文标签: 局域网 或非 服务器 SSH Linux