linux ssh命令
2025-02-17
简介
SSH (Secure Shell) 是一种加密的网络传输协议,可以在不安全的网络中为网络服务提供安全的传输环境。
基本特点
- 默认端口:22
- 进程名:sshd (守护进程)
- 主要组件:
- openssh:提供 SSH 服务
- openssl:提供加密程序
SSH的加密技术
SSH1 vs SSH2
SSH1
- 不验证客户端密钥
- 安全性较低
SSH2
- 使用 Diffie-Hellman 密钥交换
- 支持 RSA 和 DSA 密钥
- RSA:支持加密和数字签名
- DSA:仅支持数字签名
基本配置
服务端配置
# 查看配置文件
vim /etc/ssh/sshd_config
# 服务管理
systemctl start sshd # 启动
systemctl stop sshd # 停止
systemctl restart sshd # 重启
systemctl reload sshd # 重载配置客户端命令
# 远程登录
ssh -p22 username@hostname
# 远程执行命令
ssh username@hostname "ls /root"
# 远程执行脚本
ssh -t username@hostname "bash /path/to/script.sh"
# 查看已知主机
cat ~/.ssh/known_hosts文件传输
# SCP 命令
scp -P22 -r local_file username@hostname:/remote_path # 上传
scp -P22 username@hostname:/remote_file local_path # 下载
# SFTP 命令
sftp -P22 username@hostname
put local_file # 上传文件
get remote_file # 下载文件免密登录配置
1. 生成密钥对
# 进入 .ssh 目录
cd ~/.ssh
# 生成密钥对
ssh-keygen -t rsa2. 分发公钥
# 复制公钥到目标服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname
# 指定端口
ssh-copy-id -i ~/.ssh/id_rsa.pub -p port username@hostname故障排查
1. 连接测试
# 测试网络连通性
ping hostname
# 测试端口连通性
telnet hostname 22
# 查看服务状态
systemctl status sshd2. 调试模式
# 开启详细日志
ssh -vvv username@hostname
# 检查防火墙
systemctl status firewalld安全建议
基本防护
- 修改默认端口
- 禁用 root 远程登录
- 使用密钥认证
访问控制
- 限制登录 IP
- 设置登录超时
- 限制登录失败次数
注意:
- 定期更新系统和 SSH 服务
- 保护好私钥文件
- 监控异常登录
参考资料: