重装linux系统后git的ssh密钥恢复
对于git用户来说, 每次要输入账户密码是相当麻烦的; 一般地都会记住密码(git config credential.helper store), 或者配置ssh证书(如下图gitee公钥配置);
但是, 系统重装之后, 原证书将不可用; 如果自己的另外一台电脑也在使用这一套密钥; 重置密钥就不太好; 一个比较好的办法是恢复原来的密钥(用同一套密钥安全性有所降低,看个人情况)
环境说明
- 操作系统: windows11, ubuntu20 双系统
- 两个系统有共享硬盘分区
备份ssh密钥
- 重装系统前, 把~/.ssh 目录copy出来备份
- 系统盘重要资料备份
恢复ssh密钥
- cd ~ && mkdir .ssh && cd .ssh 创建ssh目录
- cp -r ${备份目录} ~/.ssh 复制密钥
- 修改证书访问权限(重要)
# 从左至右,1-3位数字代表文件所有者的权限,4-6位数字代表同组用户的权限,7-9数字代表其他用户的权限, 具体的权限是由数字来表示的,读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示
chmod 700 ~/.ssh #(drwx------)
chmod 644 ~/.ssh/id_rsa.pub #(-rw-r--r--)
chmod 600 ~/.ssh/id_rsa #(-rw-------)
- 把专用密钥添加到ssh-agent(重要)
# ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中
ssh-add ~/.ssh/id_rsa
- 重启ssh服务: service ssh restart
- ssh密钥恢复完成, git pull 正常
双系统ntfs分区git只读问题
windows 10, 11, 快速启动模式下,非完全关机时windows会将硬盘分区写保护,所以再进入Linux后,挂载了写保护的分区, 默认是不让写入的; 如果强制删除(sudo ntfs-3g -o remove_hiberfile /dev/sdaxx /mnt/win10/xx), 会有丢失文件的风险, 不建议使用此方法
- 建议划分出一块 exfat的分区, 用于双系统文件共享
- 在linux系统使用fstab挂载此硬盘分区
.git目录权限问题
如果使用fstab文件配置了自动mount ntfs, exfat文件格式的硬盘分区, 默认是root:root权限, 如果使用 chmod修改权限, 回到windows系统后, 权限会出问题
比较好的办法是在fstab配置里面加上 uid,gid 选项:
id $USER #使用id命令, 查询当前用户的id, 我的是1000
# 配置fstab
UUID=$disk_partition_uuid /home/$USER/$dir exfat user,exec,uid=1000,gid=1000 0 0
sudo umount -a #卸载磁盘
# 如果报错: target is busy
lsof /dev/sdb4 查询占用分区的进程, 然后退出目录, 或者kill -9 $pid
sudo mount -a # 重新挂载, 可以看到ntfs分区的用户组已经为当前登录的用户 $USER:$USER权限了
linux的fstab文件详解
npm 报错: "Error: ENOSYS: function not implemented, symlink… "
在linux 系统挂载的exfat分区上 npm install, exfat文件系统不支持 symlink, 暂无好的解决方案, 把项目mv到Ext4文件系统的分区就正常了
filemode 引用的文件修改
- 在项目目录: git config core.filemode false, 忽略
- git config --global core.filemode false 为何无效? .git的配置会覆盖全局配置
更多推荐
重装linux系统后git的ssh密钥恢复
发布评论