SSH命令用于远程安全登录服务器,基本格式:
ssh 用户名@主机地址
,首次连接需确认主机密钥;使用密钥认证更安全:ssh -i 私钥文件 用户@主机
,传输文件用scp
命令,退出会话输入exit
。
标准连接语法:
ssh [用户名]@[服务器IP或域名] -p [端口号]
- 示例:
ssh admin@203.0.113.25 -p 22
admin
:远程服务器的用户名0.113.25
:服务器IP地址(可替换为域名如example.com
)-p 22
:指定SSH端口(默认22,若未修改可省略此参数)
关键参数详解
参数 | 作用 | 使用场景示例 |
---|---|---|
-p |
指定端口 | ssh user@host -p 2222 (非默认端口时) |
-i |
指定私钥文件 | ssh -i ~/.ssh/id_rsa user@host (密钥登录) |
-v |
显示调试信息 | ssh -v user@host (排查连接问题) |
-C |
启用压缩传输 | ssh -C user@host (加速大文件传输) |
密钥认证登录(推荐安全方式)
步骤:
-
生成密钥对(本地操作):
ssh-keygen -t ed25519 # 推荐算法,或使用 -t rsa
默认保存到
~/.ssh/id_ed25519
(私钥)和~/.ssh/id_ed25519.pub
(公钥) -
上传公钥到服务器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
或手动复制公钥内容到服务器
~/.ssh/authorized_keys
文件中 -
使用私钥连接:
ssh -i ~/.ssh/id_ed25519 user@host
常见问题排查
-
连接超时
- 检查网络是否通畅:
ping host
- 确认防火墙放行SSH端口(默认22)
- 服务器SSH服务状态:
sudo systemctl status sshd
- 检查网络是否通畅:
-
权限拒绝(Permission Denied)
- 检查用户名/密码是否正确
- 确认公钥已正确添加到服务器的
authorized_keys
- 检查服务器文件权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
-
Host Key验证错误
若服务器重装系统导致密钥变更,删除本地旧记录:ssh-keygen -R [服务器IP] # 更新known_hosts
安全最佳实践
-
禁用密码登录(密钥登录后):
编辑服务器/etc/ssh/sshd_config
:PasswordAuthentication no ChallengeResponseAuthentication no
重启服务:
sudo systemctl restart sshd
-
修改默认端口(减少暴力破解):
Port 2222 # 在sshd_config中修改
-
使用Fail2ban:
自动封禁多次登录失败的IP地址
进阶技巧
-
远程执行命令(不进入交互终端):
ssh user@host "ls -l /var/log"
-
SSH隧道端口转发:
ssh -L 8080:localhost:80 user@host # 本地8080映射到服务器的80端口
-
配置文件简化(
~/.ssh/config
):Host myserver HostName 203.0.113.25 User admin Port 2222 IdentityFile ~/.ssh/id_ed25519
连接时只需:
ssh myserver
引用说明基于OpenSSH 8.9官方文档、Linux man-pages及NIST安全配置指南(SP 800-123),密钥算法推荐参考NSA CNSA 2.0标准,端口安全实践依据CIS基准指南。
通过遵循上述步骤,您可安全高效地使用SSH管理远程服务器,建议定期更新OpenSSH版本并审计服务器配置以保障安全。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7740.html