当前位置:首页>微思动态 > >详情
全国热线电话 400-881-4699

在线留言

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 安全加固建议

  1. 禁止root登录: PermitRootLogin no

  2. 禁用密码认证: PasswordAuthentication no

  3. 仅允许特定用户: AllowUsers user1 user2

  4. 修改默认端口: Port 2222

  5. 限制登录尝试: MaxAuthTries 3

  6. 定期审计日志: /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 作为入职的基础技能要求。

认准红帽官方授权

微思-红帽官方授权合作伙伴!




返回顶部