插件窝 干货文章 Linux SysOps中使用SSH精简操作命令的技巧

Linux SysOps中使用SSH精简操作命令的技巧

SSH User server bash 963    来源:    2025-04-11

Linux SysOps中SSH操作命令精简技巧

作为系统运维工程师,高效使用SSH是必备技能。以下是一些可以显著提高工作效率的SSH使用技巧:

1. SSH配置优化

~/.ssh/config 文件配置

Host myserver
    HostName server.example.com
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_rsa_myserver
    ServerAliveInterval 60
    TCPKeepAlive yes

这样只需输入 ssh myserver 即可连接,无需每次输入完整信息。

2. 常用连接命令精简

# 常规连接
alias sshprod='ssh user@prod-server -p 2222'

# 带端口转发的连接
alias sshprod-tunnel='ssh -L 8080:localhost:80 user@prod-server'

# 直接执行远程命令
ssh myserver "df -h"

3. 免密码登录设置

# 生成密钥对
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"

4. 多服务器批量操作

使用并行SSH工具

# 安装pssh
sudo apt-get install pssh  # Debian/Ubuntu
sudo yum install pssh      # CentOS/RHEL

# 批量执行命令
parallel-ssh -h servers.txt -l user "uptime"

使用for循环

for server in $(cat servers.list); do
    ssh $server "command-to-execute"
done

5. SSH隧道与端口转发

# 本地端口转发(访问远程服务)
ssh -L 3306:localhost:3306 user@dbserver

# 远程端口转发(暴露本地服务)
ssh -R 8080:localhost:80 user@gateway

# 动态SOCKS代理
ssh -D 1080 user@proxy-server

6. 文件传输精简命令

# 复制本地文件到远程
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/

7. SSH会话管理

# 使用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

8. 安全增强技巧

# 使用证书代替密码
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

9. 实用小技巧

# 快速测试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 -

掌握这些技巧可以显著提高日常系统管理工作的效率,减少重复输入和错误。