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
安全建议
- 禁用 root 登录 (
PermitRootLogin no
in/etc/ssh/sshd_config
) - 使用密钥认证而非密码
- 更改默认 SSH 端口
- 限制可登录用户 (
AllowUsers
in sshd_config) - 使用 fail2ban 防止暴力破解
故障排查
- 检查服务状态:
systemctl status sshd
- 检查日志:
journalctl -u sshd
- 测试连接:
ssh -v username@hostname
No Comments