SSH基础连接命令
语法格式:
ssh [选项] 用户名@主机地址
常用参数:
-p 端口号
:指定SSH端口(默认22)-i 密钥文件
:使用私钥认证(如-i ~/.ssh/id_rsa
)-v
:显示详细连接过程(调试用)
示例:
ssh admin@192.168.1.100 # 默认端口登录 ssh -p 2222 user@example.com # 指定端口登录
密钥认证:更安全的登录方式
步骤1:生成密钥对
ssh-keygen -t rsa -b 4096 # 生成4096位RSA密钥
- 默认保存位置:
~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)
步骤2:上传公钥到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host # 自动上传
或手动复制公钥内容到服务器的 ~/.ssh/authorized_keys
文件中
步骤3:密钥登录验证
ssh -i ~/.ssh/my_key user@host # 使用指定私钥登录
高级应用场景
-
执行远程命令
无需登录直接操作:ssh user@host "ls -l /var/log" # 查看远程服务器日志
-
文件传输(SCP/SFTP)
- SCP命令:
scp file.txt user@host:/remote/path # 上传 scp user@host:/remote/file.txt ./ # 下载
- SFTP交互模式:
sftp user@host # 启动SFTP会话 sftp> put local_file # 上传文件 sftp> get remote_file # 下载文件
- SCP命令:
-
端口转发
- 本地端口转发(访问远程服务):
ssh -L 8080:localhost:80 user@host # 本地8080映射到远程80端口
- 远程端口转发(暴露本地服务):
ssh -R 9000:localhost:3000 user@host # 远程9000映射到本地3000端口
- 本地端口转发(访问远程服务):
安全加固实践
-
禁用密码登录(修改服务器配置)
编辑/etc/ssh/sshd_config
:PasswordAuthentication no # 关闭密码认证 PermitRootLogin no # 禁止root直接登录 Port 8822 # 更改默认端口
重启服务:
sudo systemctl restart sshd
-
使用Fail2ban防御暴力破解
sudo apt install fail2ban # Debian/Ubuntu sudo systemctl enable fail2ban
-
密钥文件权限检查
确保私钥权限为600:chmod 600 ~/.ssh/id_rsa
常见问题解决
-
连接超时
检查防火墙:sudo ufw allow 22
(或自定义端口)
确认SSH服务状态:systemctl status sshd
-
密钥登录失败
验证服务器authorized_keys
文件权限:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
-
“Host key verification failed”错误
清除旧指纹:ssh-keygen -R hostname # 更新已知主机记录
SSH是Linux系统管理的基石,掌握密钥认证、端口转发和安全配置能显著提升工作效率与系统安全性,建议:
- 始终使用密钥替代密码
- 定期更新SSH服务版本
- 通过
ssh -v
输出诊断复杂问题
引用说明:
- OpenSSH官方文档:https://www.openssh.com/manual.html
- Linux man pages(
man ssh
)- NIST安全配置指南:SP 800-123 基于Linux 5.x+内核及OpenSSH 8.9+版本验证*
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9387.html