Linux系统可通过SSH协议远程登录其他服务器,使用
ssh 用户名@服务器IP
命令连接,支持密码或密钥认证,常用选项包括-p
指定端口,-i
加载私钥文件实现免密登录。SSH:安全登录的首选方法
SSH(Secure Shell)是加密的远程登录协议,默认使用22端口,通过密钥或密码验证身份。
基础登录命令
ssh username@server_ip # 示例:ssh admin@192.168.1.100
- 首次连接:提示确认服务器指纹(输入
yes
保存到~/.ssh/known_hosts
)。 - 指定端口:
ssh -p 2222 user@ip
(适用于非默认端口)。
密钥登录(免密登录)
步骤:
- 生成密钥对(本地执行):
ssh-keygen -t rsa -b 4096 # 默认保存到~/.ssh/id_rsa
- 上传公钥到目标服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip # 自动追加公钥到~/.ssh/authorized_keys
- 直接登录:
ssh user@ip
无需输入密码。
密钥管理注意:
- 私钥权限应为600:
chmod 600 ~/.ssh/id_rsa
- 禁用密码登录(提升安全性,见后文)。
其他登录方式(适用特定场景)
Telnet(不推荐)
telnet server_ip 23
- 风险:数据传输未加密,易被窃听,仅限测试环境使用。
图形界面登录
- VNC:
vncviewer server_ip:1
(需目标服务器安装tigervnc-server
)。 - RDP:
xfreerdp /u:user /v:ip
(连接Windows服务器)。
高级技巧与工具
会话持久化:tmux
或 screen
防止网络中断导致任务终止:
ssh user@ip tmux new -s session_name # 进入后运行任务 # 断开重连:tmux attach -t session_name
自动化登录脚本(谨慎使用)
- sshpass(明文密码风险):
sshpass -p "password" ssh user@ip
- Expect脚本:
#!/usr/bin/expect spawn ssh user@ip expect "password:" send "your_passwordr" interact
⚠️ 警告:自动化工具需严格限制权限,避免密码泄露。
安全最佳实践
- 禁用密码登录(强制密钥验证):
# 目标服务器修改/etc/ssh/sshd_config: PasswordAuthentication no PermitRootLogin no # 禁止root直接登录 Port 2222 # 更改默认端口 systemctl restart sshd
- 使用SSH代理转发:
ssh -A user@jump_server # 转发本地密钥到跳板机
- 防火墙限制:仅允许可信IP访问SSH端口。
- 定期更新:保持OpenSSH版本最新(
sudo apt upgrade openssh-server
)。
常见故障排查
问题现象 | 解决方法 |
---|---|
Connection refused | 检查目标SSH服务状态:systemctl status sshd ;确认防火墙是否放行端口。 |
Permission denied | 检查~/.ssh/authorized_keys 权限(应为600);确认私钥是否匹配。 |
Host key changed | 删除~/.ssh/known_hosts 中对应IP的行(或使用ssh-keygen -R ip )。 |
慢速连接 | 禁用DNS反查:目标服务器sshd_config 添加UseDNS no 。 |
SSH密钥登录是Linux远程管理的黄金标准,结合端口更改、密码禁用等策略可显著提升安全性,图形工具(如VNC)适用于特殊需求,但始终优先选择加密连接,定期审计登录日志(/var/log/auth.log
)和更新系统是持续安全的关键。
引用说明:
- OpenSSH官方文档:https://www.openssh.com/manual.html
- Linux
man
手册(命令:man ssh
,man sshd_config
)- NIST安全指南(SP 800-123)关于服务器加固建议
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/35558.html