ssh命令使用

文章目录

ssh命令基本用法和使用技巧

基本用法

bash 复制代码
# 最基本连接方式
ssh username@hostname

# 指定端口(默认22)
ssh -p 2222 username@hostname

# 使用密钥登录(推荐方式)
ssh -i ~/.ssh/private_key.pem username@hostname

执行远程命令

bash 复制代码
# 执行单条命令
ssh username@hostname "ls -la"

# 执行多条命令
ssh username@hostname "cd /tmp && ls -la"

# 执行本地脚本
ssh username@hostname < script.sh

配置文件优化

编辑~/.ssh/config:

bash 复制代码
Host myserver
    HostName server.example.com
    User username
    Port 2222
    IdentityFile ~/.ssh/myserver_key
    ServerAliveInterval 60
    ServerAliveCountMax 3

使用:ssh myserver

生成ssh密钥对

bash 复制代码
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

默认路径为~/.ssh/id_rsa,公钥为~/.ssh/id_rsa.pub,在远程服务器上配置好公钥后可以使用ssh命令直接登录。

ssh隧道原理

SSH隧道利用SSH的安全加密通道,将本地或远程的端口数据转发到另一端,实现安全通信。

三种隧道模式

  1. 本地端口转发(Local Port Forwarding)
bash 复制代码
# 将本地端口转发到远程
ssh -L 8080:localhost:80 username@hostname
# 访问本地的8080端口相当于访问远程的80端口
  1. 远程端口转发(Remote Port Forwarding)
bash 复制代码
# 将远程端口转发到本地
ssh -R 8080:localhost:80 username@hostname
# 远程服务器8080端口的数据会转发到本地的80端口
  1. 动态端口转发(SOCKS代理)
bash 复制代码
ssh -D 1080 username@hostname
# 创建SOCKS5代理,可通过代理访问任意地址

为什么ssh隧道能连通但不能ping通?

  • 协议层不同,ssh命令处于TCP传输层,而ping命令属于网络层(ICMP)
  • 防火墙策略限制,云服务器为了安全,可能丢弃ICMP报文,也就是禁止ping,测试禁止ping的服务器连通性可以使用telnet命令

路由配置的层次

通过ssh转发而登录的服务器,通常位于私有网络中,这时候是ping不通的,因为没有路由,常见路由配置层次如下:

text 复制代码
1. 本地机器路由表    ← 你直接控制的
2. 家庭/公司路由器   ← 网络管理员控制
3. ISP网络          ← 运营商控制  
4. 云服务商网络     ← 云厂商控制
5. 目标服务器网络   ← 对方管理员控制

误解VS现实

误解 现实
"ping不通就是网络不通" ping只是测试ICMP协议,不代表TCP不通
"SSH能通说明路由没问题" 对!路由确实没问题
"需要手动配置路由才能ping公网" 不对,默认路由自动处理公网访问
"路由配置很复杂" 家用网络和云网络大部分自动配置

在云环境中,SSH能通但ping不通是完全正常的配置,这通常是出于安全考虑的有意设置,不是故障!

相关推荐
Cosolar2 小时前
LlamaIndex索引类型全解析:原理与实战指南
运维·服务器
方便面不加香菜5 小时前
Linux--基础IO(一)
linux·运维·服务器
鼎讯信通7 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..8 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
跨境数据猎手8 小时前
大数据在电商行业的应用
大数据·运维·爬虫
linyanRPA9 小时前
影刀RPA店群自动化实战:多店铺活动自动报名与促销管理架构设计
运维·自动化·办公自动化·rpa·python脚本·爬虫自动化·店群自动化
mounter6259 小时前
现代 Linux 内存管理的演进与变革:从传统 LRU 到多代架构 MGLRU
linux·服务器·kernel
会Tk矩阵群控的小木9 小时前
安卓群控系统对于游戏工作室实战教程
android·运维·游戏·adb·开源软件·个人开发
赵渝强老师10 小时前
【赵渝强老师】Kubernetes(K8s)中的金丝雀升级
linux·docker·云原生·容器·kubernetes
佛山个人技术开发10 小时前
GitCode SSH连接配置教程
运维·ssh·gitcode