作为系统运维工程师,高效使用SSH是必备技能。以下是一些可以显著提高工作效率的SSH使用技巧:
Host myserver
HostName server.example.com
User admin
Port 2222
IdentityFile ~/.ssh/id_rsa_myserver
ServerAliveInterval 60
TCPKeepAlive yes
这样只需输入 ssh myserver
即可连接,无需每次输入完整信息。
# 常规连接
alias sshprod='ssh user@prod-server -p 2222'
# 带端口转发的连接
alias sshprod-tunnel='ssh -L 8080:localhost:80 user@prod-server'
# 直接执行远程命令
ssh myserver "df -h"
# 生成密钥对
ssh-keygen -t rsa -b 4096
# 复制公钥到远程服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-server
# 或手动复制
cat ~/.ssh/id_rsa.pub | ssh user@remote-server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# 安装pssh
sudo apt-get install pssh # Debian/Ubuntu
sudo yum install pssh # CentOS/RHEL
# 批量执行命令
parallel-ssh -h servers.txt -l user "uptime"
for server in $(cat servers.list); do
ssh $server "command-to-execute"
done
# 本地端口转发(访问远程服务)
ssh -L 3306:localhost:3306 user@dbserver
# 远程端口转发(暴露本地服务)
ssh -R 8080:localhost:80 user@gateway
# 动态SOCKS代理
ssh -D 1080 user@proxy-server
# 复制本地文件到远程
scp file.txt user@remote:/path/to/dest/
# 从远程复制文件
scp user@remote:/path/to/file.txt .
# 递归复制目录
scp -r dir/ user@remote:/path/to/dest/
# 使用rsync(更高效)
rsync -avz /local/dir/ user@remote:/remote/dir/
# 使用screen/tmux保持会话
ssh user@server -t 'tmux attach || tmux new'
# 断线自动重连
while true; do ssh user@server; sleep 2; done
# 使用ControlMaster复用连接
# 在~/.ssh/config中添加:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
ControlPersist 1h
# 使用证书代替密码
ssh -i /path/to/cert.pem user@server
# 限制IP访问
echo "from=\"192.168.1.*\" ssh-rsa AAAAB3..." >> ~/.ssh/authorized_keys
# 禁用密码认证(配置后)
# 在/etc/ssh/sshd_config中设置:
PasswordAuthentication no
# 快速测试SSH连接
ssh -T user@server
# 查看SSH指纹
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
# 压缩传输大数据
ssh user@server "tar czf - /path/to/data" | tar xzvf -
掌握这些技巧可以显著提高日常系统管理工作的效率,减少重复输入和错误。