SSH(Secure Shell)
1. 什么是 SSH?
SSH 是一种加密的网络协议,用于安全地远程登录到服务器和执行命令。
2. 基本连接命令
1 2 3 4 5 6 7 8 9 10 11
| ssh 192.168.1.100
ssh username@192.168.1.100
ssh -p 2222 username@192.168.1.100
ssh username@example.com
|
3. 高级用法
密钥认证(免密码登录):
1 2 3 4 5 6 7 8
| ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-copy-id username@192.168.1.100
cat ~/.ssh/id_rsa.pub | ssh username@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
|
执行远程命令:
1 2 3 4 5
| ssh username@192.168.1.100 "ls -la"
ssh username@192.168.1.100 "cd /var/log && tail -f syslog"
|
端口转发:
1 2 3 4 5 6 7 8
| ssh -L 8080:localhost:80 username@192.168.1.100
ssh -R 9090:localhost:3000 username@192.168.1.100
ssh -D 1080 username@192.168.1.100
|
文件传输:
1 2 3 4 5 6 7 8
| scp file.txt username@192.168.1.100:/path/to/destination/
scp username@192.168.1.100:/path/to/file.txt ./
scp -r directory/ username@192.168.1.100:/path/to/destination/
|
SSH 配置简化:
1 2 3 4 5 6 7 8 9
| Host myserver HostName 192.168.1.100 User username Port 22 IdentityFile ~/.ssh/id_rsa
ssh myserver
|
4. 常用选项
1 2 3 4 5
| ssh -v ssh -C ssh -X ssh -A ssh -t
|
FTP(File Transfer Protocol)
1. 什么是 FTP?
FTP 是用于在网络上进行文件传输的协议。注意:FTP 是不加密的,建议使用 SFTP 或 SCP。
2. 基本 FTP 命令
连接 FTP 服务器:
1 2
| ftp ftp.example.com ftp 192.168.1.100
|
3. FTP 常用命令
登录后操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| ftp -u username:password ftp.example.com
ls dir pwd cd /path lcd /local/path
get filename mget *.txt put filename mput *.txt
delete filename mkdir dirname rmdir dirname
binary ascii
passive active
bye quit
|
4. 更安全的替代方案:SFTP
SFTP(SSH File Transfer Protocol):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| sftp username@192.168.1.100
ls lls cd /path lcd /local/path
get file put file rm file mkdir dir
exit
|
命令行 SFTP 传输:
1 2 3 4 5 6 7 8
| sftp username@192.168.1.100:/remote/path/file.txt ./local/path/
sftp username@192.168.1.100 <<< $'put localfile.txt /remote/path/'
sftp -b commands.txt username@192.168.1.100
|
5. 其他 FTP 工具
使用 curl:
1 2 3 4 5
| curl -u username:password -O ftp://ftp.example.com/file.txt
curl -u username:password -T file.txt ftp://ftp.example.com/
|
使用 wget:
1
| wget --ftp-user=username --ftp-password=password ftp://ftp.example.com/file.txt
|
使用 lftp(功能强大的 FTP 客户端):
1 2 3
| lftp -u username,password ftp.example.com
mirror /remote/dir /local/dir
|
安全建议
- 优先使用 SSH/SFTP 而不是 FTP
- 禁用密码认证,使用密钥认证
- 更改默认 SSH 端口
- 使用 Fail2ban 防止暴力破解
- 定期更新 SSH 密钥
实用示例
通过 SSH 管理远程服务器:
1 2 3 4 5 6 7 8
| ssh user@server "uptime && free -h && df -h"
ssh user@server "tar czf - /important/data" > backup.tar.gz
ssh user@server "tail -f /var/log/syslog"
|
批量文件操作:
1 2 3 4 5
| rsync -avz -e ssh /local/dir/ user@server:/remote/dir/
scp -r user@server:/remote/dir/* ./local/dir/
|
SSH 是现代系统管理的必备工具,而 FTP 由于其安全性问题,建议仅在内部网络或使用 SFTP 替代。