SSH基础连接命令
-
基本登录语法
ssh username@remote_host_ip
- 示例:
ssh admin@192.168.1.100
- 首次连接会提示确认主机指纹,输入
yes
后继续
- 示例:
-
指定端口连接
若服务器使用非默认端口(如2222):ssh -p 2222 user@hostname
-
使用域名连接
ssh user@example.com
密钥认证(推荐安全方式)
-
生成密钥对
ssh-keygen -t ed25519 # 推荐ed25519算法
- 密钥默认保存在
~/.ssh/id_ed25519
(私钥)和~/.ssh/id_ed25519.pub
(公钥)
- 密钥默认保存在
-
上传公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
完成后即可免密登录
-
手动复制公钥
若服务器禁用ssh-copy-id
:cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
高级功能应用
-
执行远程命令
ssh user@host "ls -l /var/log" # 查看远程服务器日志
-
端口转发(隧道)
- 本地端口转发(将远程3306映射到本地13306):
ssh -L 13306:localhost:3306 user@host
- 远程端口转发(将本地服务暴露到公网):
ssh -R 8080:localhost:80 user@public_server
- 本地端口转发(将远程3306映射到本地13306):
-
文件传输
使用SCP基于SSH协议传输:scp -P 2222 local_file.txt user@host:/remote/path/ # 上传 scp user@host:/home/data.zip ./downloads/ # 下载
配置文件优化
编辑~/.ssh/config
简化连接:
Host myserver HostName 203.0.113.10 User admin Port 2222 IdentityFile ~/.ssh/myserver_key
之后只需执行:ssh myserver
安全最佳实践
-
禁用密码登录(修改
/etc/ssh/sshd_config
):PasswordAuthentication no PermitRootLogin no
-
更改默认端口:
Port 22222 # 避免22端口扫描
-
超时自动断开:
ClientAliveInterval 300 ClientAliveCountMax 0
故障排查技巧
-
启用详细模式:
ssh -vvv user@host # 显示完整调试信息
-
常见错误解决:
- 权限问题:确保
~/.ssh
目录权限为700,密钥文件为600 - 连接拒绝:检查防火墙(
sudo ufw allow 2222
)或SSH服务状态(sudo systemctl status sshd
) - 主机密钥变更:删除
~/.ssh/known_hosts
中对应条目
- 权限问题:确保
典型应用场景
- 远程维护:通过SSH更新服务器补丁
- 跳板机访问:通过中转服务器连接内网机器
- 自动化脚本:结合
cron
执行定期备份任务 - 开发调试:使用
ssh -X
启用图形界面转发(如运行远程GUI程序)
重要提示:
- 私钥等同于密码,禁止通过邮件或聊天工具传输
- 定期轮换密钥(建议每3-6个月更新)
- 使用
fail2ban
防御暴力破解
引用说明: 参考OpenSSH官方文档(openssh.com/manual.html)、Linux man-pages项目及NIST安全配置指南(SP 800-123),操作建议已通过Ubuntu 22.04/CentOS 7+环境验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7397.html