SSH工具
- OpenSSH
- OpenSSH + VS Code Remote SSH
- Xshell
OpenSSH使用
OpenSSH系统自带
- OpenSSH 负责建立 SSH 连接
- VS Code Remote SSH 利用这个连接
- 在远程服务器上直接打开项目、终端和运行代码
# 查看版本
ssh -V
OpenSSH_10.3p1, LibreSSL 3.3.6
OpenSSH 命令
- 连接远程数据库
-L来本地端口转发-N不打开远程 Shell,只建立隧道 (不打开远程终端)- 注意如果不加
-N参数的话,通过-L进入远程服务器的话,还会进入到远程服务器 Shell
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来访问远程数据库来
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 进行文件传输
# 登录服务器:
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 本地文件 用户@主机地址:远程目标路径
# 上传:本机 → 服务器
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
# 删除 SSH 已保存的某个主机的密钥记录:
ssh-keygen -R '[localhost]:2223'