Ubuntu 26.04 LTS 服务器 SSH 免密登录与文件传输实战笔记
一、 核心概念速查
|
场景 |
推荐工具 |
关键点 |
|---|---|---|
|
首次传公钥 |
|
依赖目标机开启 PasswordAuthentication yes |
|
日常登录 |
|
依赖目标机 |
|
传文件 (安全) |
|
配合密钥登录,无需输密码 |
|
传大量小文件 |
|
速度快,跳过单个文件加密开销 |
二、 环境背景
-
宿主机: Ubuntu (VirtualBox)
-
虚拟机: 192.168.56.102 (Host-Only 网络模式)
-
目标目录:
/opt/zabbix(Zabbix 相关)
三、 标准操作流程 (SOP)
1. 源端:生成 SSH 密钥对
报错 No identities found就是因为没做这一步。
# 在宿主机执行(一路回车,不设密码最方便)
ssh-keygen -t rsa -b 4096
生成文件:
-
~/.ssh/id_rsa(私钥,保密) -
~/.ssh/id_rsa.pub(公钥,待分发)
2. 目标端:临时开启密码登录
为了让 ssh-copy-id能把公钥送进去,必须暂时允许密码登录。
# 在 192.168.56.102 上操作
vi /etc/ssh/sshd_config
修改以下两项:
PasswordAuthentication yes
PermitRootLogin yes # 或者 prohibit-password
重启服务:
systemctl restart ssh
3. 源端:推送公钥
# 推送给 root 用户
ssh-copy-id root@192.168.56.102
原理:自动将 ~/.ssh/id_rsa.pub内容追加到目标机的 /root/.ssh/authorized_keys文件中。
4. 目标端:恢复安全配置(可选但推荐)
推送成功后,关掉密码登录,防止暴力破解。
vi /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin prohibit-password
systemctl restart ssh
四、 疑难杂症排查 (踩坑记录)
问题 1:明明是 Root,却提示 Permission denied
现象:scp或 rsync传文件到 /opt/zabbix失败,但传到普通用户目录成功。
原因:Linux 的“目录归属权”机制。
-
/opt/zabbix可能是由某个普通用户(如zabbix或ubuntu)创建的。 -
即使你是 Root,如果目录设置了严格的权限或粘滞位(Sticky Bit),Root 也可能被拦截。
解决:
# 在目标机 102 上执行,夺回目录所有权
chown -R root:root /opt/zabbix
chmod 755 /opt/zabbix
问题 2:ssh-copy-id报错 Permission denied (publickey,password)
现象:输入密码后还是失败。
原因:
-
配置未生效:改了
sshd_config没重启sshd。 -
PAM 限制:某些系统限制了 Root 的 SSH 行为。
-
目录权限错误:
/root/.ssh或authorized_keys权限太开放(必须严格限制)。
解决(手动兜底方案):
如果 ssh-copy-id死活不行,手动复制
五、 常用命令速记
文件传输
# 1. 基础 SCP
scp local_file.txt root@192.168.56.102:/opt/zabbix/
# 2. 推荐 Rsync (断点续传/增量)
rsync -avz --progress local_dir/ root@192.168.56.102:/opt/zabbix/
# 3. 大量小文件 (极速)
tar czf - /data/logs | ssh root@192.168.56.102 "cd /opt && tar xzf -"
权限修复
# 万能修复(针对 /opt/zabbix 无法写入)
chown -R root:root /opt/zabbix
chmod -R 755 /opt/zabbix
# 清除不可变属性(如果之前被锁死)
chattr -R -i /opt/zabbix
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)