1 分钟阅读

本文系统讲解 SSH(Secure Shell)在 Linux 系统中的使用方法,包括基础连接、密钥配置、文件传输、端口转发、安全配置等内容,适合初学者入门与进阶用户参考。


1. 什么是 SSH?

SSH(Secure Shell) 是一种加密的网络协议,用于在不安全的网络中安全访问远程计算机,通常用于远程登录服务器、传输文件、执行命令等操作。

SSH 具有以下特点:

  • 提供强加密的认证和数据传输
  • 支持基于用户名密码或密钥的身份验证
  • 支持端口转发与代理隧道
  • 可用于远程命令执行与图形界面转发(X11)

2. SSH 安装与启动

2.1 Linux 安装客户端(通常预装)

sudo apt update
sudo apt install openssh-client

2.2 安装并启动服务端(服务器)

sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl status ssh

2.3 查看 SSH 服务端口

sudo netstat -tnlp | grep ssh
# 默认端口为 22

3. SSH 基础用法

3.1 登录远程服务器

ssh username@remote_ip
# 示例
ssh student@192.168.1.100

3.2 指定端口登录

ssh -p 2222 username@remote_ip

3.3 执行远程命令

ssh username@remote_ip "ls -l /home/username"

3.4 保持连接后台运行

ssh -fN username@remote_ip

4. SSH 密钥登录配置

4.1 生成 SSH 密钥对

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

默认生成文件:

  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub

4.2 将公钥上传至远程主机

ssh-copy-id username@remote_ip

或手动追加至远程主机的 ~/.ssh/authorized_keys

4.3 测试免密登录

ssh username@remote_ip
# 不再需要输入密码

5. SSH 文件传输

5.1 使用 scp(Secure Copy)

# 上传本地文件到远程
scp localfile.txt user@remote_ip:/path/to/destination

# 下载远程文件到本地
scp user@remote_ip:/path/to/file.txt ./localdir

5.2 使用 rsync(增量传输)

rsync -avz ./localdir/ user@remote_ip:/path/to/remote/dir/

6. SSH 端口转发

6.1 本地端口转发(Local Forwarding)

ssh -L 8080:localhost:80 user@remote_ip
# 将本地8080端口映射到远程服务器的80端口

6.2 远程端口转发(Remote Forwarding)

ssh -R 9090:localhost:3000 user@remote_ip
# 将远程9090端口映射到本地3000端口

6.3 动态端口转发(SOCKS 代理)

ssh -D 1080 user@remote_ip
# 本地开启一个 SOCKS5 代理

7. SSH 配置文件说明

配置路径:~/.ssh/config

# 示例:多主机自动配置
Host lab
    HostName 192.168.1.100
    User student
    Port 22
    IdentityFile ~/.ssh/id_rsa

Host aws
    HostName ec2-3-123-456.compute.amazonaws.com
    User ubuntu
    IdentityFile ~/.ssh/aws.pem

连接方式:

ssh lab
ssh aws

8. SSH 安全加固

8.1 修改默认端口(如 2222)

sudo vim /etc/ssh/sshd_config
# Port 2222
sudo systemctl restart ssh

8.2 禁用 root 登录

# 在 sshd_config 中设置:
PermitRootLogin no

8.3 禁用密码登录(只允许密钥)

PasswordAuthentication no

8.4 配置防火墙规则(如 UFW)

sudo ufw allow 2222/tcp
sudo ufw enable

9. 常见问题与排查

问题 可能原因 解决方案
Connection refused SSH 服务未启动 sudo systemctl start ssh
Permission denied 权限错误/密钥无效 检查密钥权限、authorized_keys 是否正确
超时 网络不通或防火墙 检查网络、防火墙端口是否开放
Too many authentication failures SSH 尝试次数过多 使用 IdentitiesOnly=yes 限制密钥尝试

10. 参考资源


📌 提示:建议为重要服务器配置 Fail2ban、设置登录警报、定期检查 authorized_keys 文件等。

留下评论