Skip to main content

SSH 使用指南

什么是 SSH

SSH (Secure Shell) 是一种加密的网络协议,用于安全地远程登录和管理系统。它替代了不安全的 Telnet 和 rlogin 等协议。

基本用法

1. 连接到远程服务器

ssh username@hostname

示例:

ssh user@example.com

2. 指定端口连接(默认22)

ssh -p port_number username@hostname

示例:

ssh -p 2222 user@example.com

密钥认证

1. 生成 SSH 密钥对

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t 指定密钥类型 (rsa, ed25519 等)
  • -b 指定密钥长度
  • -C 添加注释

2. 将公钥复制到远程服务器

ssh-copy-id username@hostname

或手动复制 ~/.ssh/id_rsa.pub 内容到远程服务器的 ~/.ssh/authorized_keys 文件中

配置文件

编辑 ~/.ssh/config 可以简化连接:

Host myserver
    HostName example.com
    User username
    Port 2222
    IdentityFile ~/.ssh/id_rsa

配置后只需使用:

ssh myserver

常用选项

选项 说明
-v 详细模式 (可叠加 -vv, -vvv)
-X 启用 X11 转发
-L 本地端口转发
-R 远程端口转发
-D 动态端口转发 (SOCKS 代理)
-N 不执行远程命令
-f 后台运行

端口转发示例

1. 本地端口转发

ssh -L local_port:remote_host:remote_port username@hostname

2. 远程端口转发

ssh -R remote_port:local_host:local_port username@hostname

文件传输

1. 使用 scp 复制文件

从本地到远程:

scp local_file username@hostname:remote_path

从远程到本地:

scp username@hostname:remote_file local_path

2. 使用 sftp 交互式传输

sftp username@hostname

安全建议

  1. 禁用 root 登录 (PermitRootLogin no in /etc/ssh/sshd_config)
  2. 使用密钥认证而非密码
  3. 更改默认 SSH 端口
  4. 限制可登录用户 (AllowUsers in sshd_config)
  5. 使用 fail2ban 防止暴力破解

故障排查

  1. 检查服务状态:
systemctl status sshd
  1. 检查日志:
journalctl -u sshd
  1. 测试连接:
ssh -v username@hostname