SSH命令详解:安全远程管理的基石
发布作者:微思网络 发布时间:2026-06-25 浏览量:0次

掌握SSH,轻松管理远程服务器
在Linux运维工作中,SSH(Secure Shell)是最常用的远程管理工具。它通过加密通道保障远程连接的安全性,是每一位运维人员的必备技能。
PART 01什么是SSH?
SSH是一种加密网络协议,用于在不安全网络上安全地运行网络服务。它取代了不安全的Telnet、rlogin等协议,广泛应用于远程登录和命令执行。
核心优势:
所有传输数据加密,防止窃听
支持多种身份验证方式
支持端口转发、X11转发等高级功能
可替代FTP进行安全文件传输
PART 02基本链接命令
2.1 最常用的连接方式
#使用默认端口(22)连接 ssh user@remote_host #指定端口连接 ssh -p 2222 user@remote_host #直接执行远程命令 ssh user@remote_host “ls -la /var/log” #使用IPv6地址 ssh user@2001:db8::1
2.2 常用选项速查

PART 03密钥认证配置
密码登录每次都要输入密码,既不安全也不方便。配置密钥认证是运维标准实践。
3.1 生成密钥对
#生成RSA密钥对(默认4096位) ssh-keygen -t rsa -b 4096 -C “your_email@example.com” #生成Ed25519密钥对(更安全、更快) ssh-keygen -t ed25519 -C “your_email@example.com” #指定文件名 ssh-keygen -t rsa -f ~/.ssh/my_server_key
生成后会产生两个文件:
~/.ssh/id_rsa :私钥(绝不能泄露)
~/.ssh/id_rsa.pub :公钥(可公开)
3.2 复制公钥到服务器
#最常用:使用ssh-copy-id自动配置 ssh-copy-id user@remote_host #手动复制(需要服务器上执行) cat ~/.ssh/id_rsa.pub | ssh user@remote_host “mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys” #如果服务器端口非默认 ssh-copy-id -p 2222 user@remote_host
3.3 配置简化:~/.ssh/config
通过配置文件简化连接命令,不用每次输入用户名和端口。
#编辑 ~/.ssh/config vim ~/.ssh/config #添加以下内容 Host myserver HostName 192.168.1.100 User admin Port 2222 IdentityFile ~/.ssh/mykey #之后直接使用 ssh myserver
PART 04安全文件传输
4.1 SCP(安全拷贝)
SCP基于SSH协议,使用方式与cp类似,但跨主机传输。
#从本地拷贝到远程 scp local_file user@remote_host:/path/to/destination/ #从远程拷贝到本地 scp user@remote_host:/remote/file /local/path/ #拷贝整个目录(递归) scp -r /local/dir/ user@remote_host:/remote/dir/ #指定端口 scp -P 2222 file user@host:/path/
4.2 SFTP(安全FTP)
需要交互式文件管理时,SFTP比SCP更方便。
#连接SFTP sftp user@remote_host #常用SFTP命令 sftp> ls # 列出远程目录 sftp> get file.txt # 下载文件 sftp> put file.txt # 上传文件 sftp> mkdir newdir # 创建远程目录 sftp> rm file.txt # 删除远程文件 sftp> bye # 退出
PART 05端口转发(隧道)
SSH端口转发是绕过防火墙、加密通信的利器。
5.1 本地转发(正向隧道)
将本地端口通过SSH隧道转发到远程服务器。
#将本地8080端口转发到远程服务器的80端口 ssh -L 8080:localhost:80 user@remote_host #将本地8080端口转发到内网web服务器的80端口 ssh -L 8080:192.168.1.10:80 user@remote_host #场景:访问远程内网服务 #本地浏览器访问 即可
5.2 远程转发(反向隧道)
将远程端口转发到本地
#将远程服务器的9090端口转发到本地的80端口 ssh -R 9090:localhost:80 user@remote_host
5.3 动态转发(SOCKS代理)
创建一个SOCKS5代理,通过远程服务器访问网络。
#本地1080端口作为SOCKS代理 ssh -D 1080 user@remote_host #配置浏览器使用127.0.0.1:1080作为SOCKS代理
PART 06常用技巧与最佳实践
6.1 保持连接活跃
防止因闲置超时导致连接断开。
#服务器端配置 /etc/ssh/sshd_config ClientAliveInterval 60 # 每60秒发送保活包 ClientAliveCountMax 3 # 最多3次无响应后断开 #客户端配置 ~/.ssh/config Host * ServerAliveInterval 60 ServerAliveCountMax 3
6.2 多会话复用(连接共享)
同一服务器建立一次连接,后续连接复用。
#在 ~/.ssh/config 中添加 Host myserver HostName 192.168.1.100 User admin ControlMaster auto ControlPath ~/.ssh/controlmasters/%r@%h:%p ControlPersist 10m
6.3 跳板机代理
通过跳板机访问内网服务器。
#方式1:直接在命令行指定 ssh -J jump_user@jump_host user@target_host #方式2:配置文件 Host target HostName 10.0.0.1 User admin ProxyJump jump_user@jump_host #方式3:使用netcat(旧方法) Host target ProxyCommand ssh jump_user@jump_host nc %h %p
6.4 安全加固建议
禁止root登录: PermitRootLogin no
禁用密码认证: PasswordAuthentication no
仅允许特定用户: AllowUsers user1 user2
修改默认端口: Port 2222
限制登录尝试: MaxAuthTries 3
定期审计日志: /var/log/auth.log
PART 07常见问题排查

#调试连接(获取详细日志) ssh -vvv user@remote_host #测试SSH服务是否可达 telnet 192.168.1.100 22 #检查known_hosts冲突 ssh-keygen -R 192.168.1.100
PART 08快速参考卡片
#常用连接 ssh user@host -p port #上传文件 scp file user@host:/path/ #下载文件 scp user@host:/remote/file ./ #密钥生成 ssh-keygen -t rsa -b 4096 #复制密钥 ssh-copy-id user@host #本地端口转发 ssh -L local_port:target_host:target_port user@host #动态SOCKS代理 ssh -D 1080 user@host #跳板机穿透 ssh -J jump_host user@target_host
总结
SSH是Linux运维中最核心的工具之一。熟练掌握SSH命令和技巧,不仅能提高日常工作效率,还能在紧急情况下快速响应。建议从基础命令开始,逐步掌握密钥管理、端口转发等高级功能,让远程管理更加得心应手。
好课推荐
红帽认证-RHCE \ RHCA
红帽认证是全球公认的 Linux 权威认证,也是国内企业招聘 Linux 运维、云计算、容器、大数据工程师时,最常标注的 “优先条件”,甚至很多企业将 RHCE/RHCA 作为入职的基础技能要求。
认准红帽官方授权
微思-红帽官方授权合作伙伴!




