跳到主要内容

SSH工具

  • OpenSSH
    • OpenSSH + VS Code Remote SSH
  • Xshell

OpenSSH使用​

OpenSSH系统自带

  • OpenSSH 负责建立 SSH 连接
  • VS Code Remote SSH 利用这个连接
    • 在远程服务器上直接打开项目、终端和运行代码
text
# 查看版本
ssh -V
OpenSSH_10.3p1, LibreSSL 3.3.6

OpenSSH 命令​

  • 连接远程数据库
    • -L 来本地端口转发
    • -N 不打开远程 Shell,只建立隧道 (不打开远程终端)
    • 注意如果不加-N参数的话,通过-L 进入远程服务器的话,还会进入到远程服务器 Shell
text
ssh 用户名@地址 -p 端口

# 指定端口:
ssh -p 2222 user@server_ip

# 本地端口转发
ssh -L 本地端口:目标地址:目标端口 user@ssh_server

# 远程数据库Mysql
ssh -N -L 13306:127.0.0.1:3306 ubuntu@1.2.3.4

ssh远程数据库命令​

  • 场景:开发环境、运维访问、内网数据库、Docker 数据库。
  • 通过ssh远程连接 + 本地端口转发之后
  • 本地就可以通过127.0.0.1:13306来访问远程数据库来
text
ssh -N -L 13306:127.0.0.1:3306 ubuntu@1.2.3.4

13306 = 你电脑上的端口
127.0.0.1 = SSH服务器看到的数据库地址
3306 = 数据库端口
ubuntu@1.2.3.4 = SSH登录地址

Xshell​

  • Windows 上通过 JumpServer 登录 Linux 服务器做运维,Xshell 依然很好用
  • Xshell是图形化界面的SSH,更方便地连接和操作远程 Linux 服务器

ssh远程数据库和直连数据库对比​

  • ssh远程数据库:最大的优点是安全和网络隔离:数据库端口不用暴露公网
  • 安全问题
    • 如果直接连数据库,就会暴露服务器端口,公网就可以直接访问,风险较高
    • 通过ssh连接的话,数据库端口可以完全不对公网开放,来保证安全性,远程服务器上的数据库只需要监听 127.0.0.1:3306这个端口能访问
    • SSH是加密连接

基于SSH来文件传输​

  • ssh = 远程登录服务器
  • scp = 通过 SSH 安全复制文件,实现上传和下载
    • 在不同服务器之间复制
    • cp表示复制,其实上传和下载都是理解为复制
    • scp [参数] 源文件 目标位置
  • sftp = 通过 SSH 进行文件传输
bash
# 登录服务器:
ssh ubuntu@10.0.0.20

# 下载文件 (将服务器的文件复制当前目录)
scp ubuntu@10.0.0.20:/tmp/app.log .
# 上传文件 (将本地的目录复制到服务器目录下)
scp ./demo.zip ubuntu@10.0.0.20:/tmp/

常见用法​

  • scp下载文件格式:scp 用户名@主机地址:远程文件路径 本地目标路径
  • scp上传文件格式:scp 本地文件 用户@主机地址:远程目标路径
text
# 上传:本机 → 服务器
scp ./demo.zip dev@10.0.0.20:/tmp/

# 下载:服务器 → 本机
scp dev@10.0.0.20:/tmp/app.log ~/Downloads/

# 指定 SSH 端口,注意是大写-P
scp -P 2223 dev@localhost:/tmp/app.log ~/Downloads/

# 复制整个目录
scp -r ./demo dev@10.0.0.20:/data/www/

ssh常用命令​

  • ssh-keygen 是SSH密钥管理工具
    • -R : Remove,表示删除指定主机的指纹记录
    • 当主机不是默认 22 端口时,需要用 [主机]:端口 这种格式来唯一表示目标
      • localhost → localhost:22
      • [localhost]:2223 → localhost:2223
text
# 删除 SSH 已保存的某个主机的密钥记录:
ssh-keygen -R '[localhost]:2223'