当前位置:首页>Linux>Linux SSH 使用详解:从入门到精通

Linux SSH 使用详解:从入门到精通

  • 2026-10-27 18:32:14
Linux SSH 使用详解:从入门到精通


Linux SSH 使用详解:从入门到精通

SSH(Secure Shell)是Linux系统中最重要、最常用的远程管理工具。本文将全面介绍SSH的安装、配置、使用方法和高级技巧。

一、SSH基础概念

1.1 什么是SSH

SSH是一种网络协议,用于加密方式远程登录和管理服务器。相比不安全的Telnet,SSH提供了:

  • • 数据加密传输
  • • 身份验证机制
  • • 数据完整性保护

1.2 SSH工作原理

SSH采用客户端-服务器架构,默认使用22端口,通过公钥加密技术建立安全连接。

二、SSH安装与启动

2.1 安装SSH服务器

# Ubuntu/Debiansudo apt updatesudo apt install openssh-server# CentOS/RHELsudo yum install openssh-server# 启动服务sudo systemctl start sshdsudo systemctl enable sshd  # 开机自启

2.2 安装SSH客户端

# Ubuntu/Debiansudo apt install openssh-client# CentOS/RHELsudo yum install openssh-clients

三、SSH基本使用

3.1 远程登录

ssh user@hostname# 示例ssh root@192.168.1.100ssh alice@myserver.com

3.2 指定端口登录

ssh -p 2222 user@hostname

3.3 首次登录

首次连接时会提示验证主机指纹:

The authenticity of host '192.168.1.100' can't be established.ECDSA key fingerprint is SHA256:...Are you sure you want to continue connecting (yes/no)?

输入yes后,该主机指纹会保存在~/.ssh/known_hosts中。

四、SSH常用选项详解

4.1 核心选项

选项
说明
-p port
指定端口号(默认22)
-i identity_file
指定私钥文件
-v/-vv/-vvv
详细模式(排错用)
-q
安静模式
-X
启用X11转发
-C
启用压缩

4.2 实用示例

# 详细模式排错ssh -v user@hostname# 启用压缩(慢速网络优化)ssh -C user@hostname# 不执行远程命令,仅测试连接ssh -T user@hostname# 指定连接超时时间ssh -o ConnectTimeout=10 user@hostname

五、SSH密钥认证(推荐)

5.1 生成密钥对

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"# 参数说明:# -t rsa: 密钥类型# -b 4096: 密钥长度# -C: 注释

执行后会生成:

  • • ~/.ssh/id_rsa (私钥,务必保管好)
  • • ~/.ssh/id_rsa.pub (公钥,可公开)

5.2 复制公钥到服务器

ssh-copy-id user@hostname# 或手动复制cat ~/.ssh/id_rsa.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

5.3 配置密钥认证后登录

ssh -i ~/.ssh/id_rsa user@hostname

5.4 禁用密码登录(安全加固)

编辑服务器 /etc/ssh/sshd_config:

PasswordAuthentication noPubkeyAuthentication yesPermitRootLogin no  # 禁止root直接登录

重启SSH服务:

sudo systemctl restart sshd

六、SSH配置文件

6.1 客户端配置(~/.ssh/config)

配置文件可简化常用连接:

# 编辑配置文件nano ~/.ssh/config# 配置示例Host myserver    HostName 192.168.1.100    User alice    Port 2222    IdentityFile ~/.ssh/id_rsa_work    ServerAliveInterval 60Host github    HostName github.com    User git    IdentityFile ~/.ssh/id_github

配置后可直接使用:

ssh myserver

6.2 服务器配置(/etc/ssh/sshd_config)

关键配置项:

Port 22  # 建议修改为非常用端口PermitRootLogin noPasswordAuthentication noAllowUsers user1 user2  # 允许登录的用户列表AllowGroups sudousers# 允许登录的用户组MaxAuthTries 3ClientAliveInterval 300ClientAliveCountMax 2

七、SSH高级功能

7.1 端口转发(隧道)

# 本地端口转发:将本地端口转发到远程服务器ssh -L 8080:localhost:80 user@hostname# 访问本地8080端口相当于访问远程的80端口# 远程端口转发:将远程端口转发到本地ssh -R 9090:localhost:3000 user@hostname# 远程服务器访问9090端口相当于访问本地的3000端口# 动态端口转发(SOCKS代理)ssh -D 1080 user@hostname# 配置浏览器使用SOCKS5代理:localhost:1080

7.2 SCP文件传输

# 上传文件scp localfile.txt user@hostname:/remote/path/# 上传目录scp -r localdir user@hostname:/remote/path/# 下载文件scp user@hostname:/remote/file.txt ./# 指定端口scp -P 2222 file.txt user@hostname:/path/

7.3 SSHFS挂载远程目录

# 安装sudo apt install sshfs  # Ubuntu/Debian# 挂载sshfs user@hostname:/remote/path /local/mount/point# 卸载fusermount -u /local/mount/point

7.4 执行远程命令

# 不登录shell,直接执行命令ssh user@hostname "ls -la /var/log"# 在远程执行本地脚本ssh user@hostname 'bash -s' < local_script.sh

7.5 多路复用(加速重复连接)

在 ~/.ssh/config 中添加:

Host *    ControlMaster auto    ControlPath ~/.ssh/sockets/%r@%h-%p    ControlPersist 600

首次连接后,后续连接会复用,速度大幅提升。

八、SSH安全最佳实践

8.1 服务器安全加固

  1. 1. 修改默认端口:编辑 sshd_config 中的 Port 项
  2. 2. 禁用root登录:PermitRootLogin no
  3. 3. 使用密钥认证:禁用密码登录
  4. 4. 限制用户访问:使用 AllowUsers 或 AllowGroups
  5. 5. 使用防火墙:仅允许特定IP访问SSH端口
    sudo ufw allow from 192.168.1.0/24 to any port 22

8.2 密钥安全

  1. 1. 设置私钥权限:chmod 600 ~/.ssh/id_rsa
  2. 2. 使用密码保护私钥:生成时设置passphrase
  3. 3. 使用ssh-agent管理密钥:
    eval"$(ssh-agent -s)"ssh-add ~/.ssh/id_rsa

8.3 定期维护

# 查看SSH登录日志sudotail -f /var/log/auth.log  # Ubuntu/Debiansudotail -f /var/log/secure    # CentOS/RHEL# 查看登录失败的IPsudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr# 使用fail2ban防止暴力破解sudo apt install fail2ban

九、常见问题解决

9.1 "Permission denied (publickey)"

  • • 检查 ~/.ssh/authorized_keys 权限是否为600
  • • 检查 .ssh 目录权限是否为700
  • • 确认公钥已正确添加

9.2 "Connection refused"

  • • 确认SSH服务已启动:systemctl status sshd
  • • 检查防火墙设置
  • • 确认端口是否正确

9.3 SSH连接超时

在客户端配置中添加:

Host *    ServerAliveInterval 60    ServerAliveCountMax 3

9.4 主机密钥验证失败

如果服务器重装系统,需要删除旧密钥:

ssh-keygen -R hostname# 或手动编辑nano ~/.ssh/known_hosts

十、实用技巧

10.1 SSH别名快速登录

配置 ~/.ssh/config 后,使用简短别名:

ssh prodssh devssh home

10.2 远程编辑文件

# 使用vim远程编辑vim scp://user@hostname//path/to/file# 使用sshfs挂载后本地编辑

10.3 SSH + Tmux/Rscreen

保持会话持久化:

ssh user@hostname -t 'tmux attach || tmux new'

10.4 通过跳板机连接

ssh -J jumpuser@jumphost user@destination# 或在配置文件中Host target    HostName destination.host    User user    ProxyJump jumpuser@jumphost

总结:SSH是Linux系统管理的基石,掌握SSH的各种用法和安全配置,是每个系统管理员和开发者的必备技能。建议始终使用密钥认证,并遵循最小权限原则进行配置。

希望这篇文章对你有所帮助!

Shell编程中mv命令使用详解

Shell编程中diff命令使用详解

Shell编程中useradd命令使用详解

Shell编程中groupadd命令使用详解

Shell编程中groupdel命令使用详解

Shell编程中userdel命令使用详解

Shell编程中usermod命令使用详解

Shell编程中mkdir命令使用详解

点分享

点收藏

点点赞

点在看

最新文章

随机文章