在.ssh文件夹中批量生成三个密钥
要在Windows下批量生成多个Git密钥,分别命名为codeup_1
, codeup_2
, codeup_3
,并假设这些密钥将存储在用户的.ssh
目录下,你可以使用以下批处理脚本来实现这一过程:
bash
@echo off
setlocal enabledelayedexpansion
set "ssh_folder=%USERPROFILE%\.ssh"
if not exist "%ssh_folder%" mkdir "%ssh_folder%"
for /L %%i in (1,1,3) do (
set "folder=codeup_%%i"
echo Generating SSH keys for !folder!
ssh-keygen -t rsa -f "%ssh_folder%\!folder!"
echo Public key saved as %ssh_folder%\!folder!.pub
)
echo All SSH keys have been generated.
endlocal
Git配置与切换不同ssh密钥
场景:当需要用多个账号进行Git提交时候需要用到,如这段时间所有仓库要用a账号提交,过段时间要切换成b账号提交,这时候就需要在一台电脑上配置多个SSH密钥。
步骤
-
1.生成 给每个账号生成不同的key,如 ** 在.ssh文件夹中批量生成三个密钥 ** 中生成的:codeup_1
,
codeup_2,
codeup_3,这三个就可以对应三个账号了。 -
然后将这三个密钥分别给三个帐号配置到阿里云效后台的SSH公钥中。
-
配置.ssh/config文件,没有这个文件则新建一个,注意这个文件没有后缀名
bashHost codeup.aliyun.com HostName codeup.aliyun.com IdentityAgent none IdentitiesOnly yes IdentityFile ~/.ssh/codeup_1 PreferredAuthentications publickey
codeup.aliyun.com的仓库都使用codeup5194这个key
切换不同账号
-
写一个bat脚本,用于切换config文件中
IdentityFile
后面的内容bash@echo off rem 设置新的 IdentityFile 内容 set "new_identity=~/.ssh/需要替换的key文件名" rem 设置 SSH 配置文件路径 set "ssh_config=%USERPROFILE%\.ssh\config" rem 检查 SSH 配置文件是否存在 if not exist "%ssh_config%" ( echo SSH 配置文件不存在:%ssh_config% exit /b ) rem 使用 "type" 命令读取文件内容并替换 type "%ssh_config%" | findstr /v /i /c:"IdentityFile" | findstr /v /i /c:"PreferredAuthentications" > "%ssh_config%.tmp" rem 将新的 IdentityFile 添加到临时文件末尾 echo IdentityFile %new_identity% >> "%ssh_config%.tmp" echo PreferredAuthentications publickey >> "%ssh_config%.tmp" rem 替换原始 SSH 配置文件 move /y "%ssh_config%.tmp" "%ssh_config%" > nul echo IdentityFile 已更新:%new_identity% rem 切换git提交账号 git config --global user.name "自己的提交作者名" git config --global user.email "提交作者邮箱"
多个账号可以创建多个bat脚本,每个脚本修改对应
"需要替换的key文件名"
、"自己的提交作者名"
、"提交作者邮箱"
即可 -
运行脚本切换到对应账号绑定的密钥
-
在
Git Base
命令行中输入ssh -t codeup.aliyun.com
即可查看当前账号,或新建一个batless@echo off REM 查看当前用户名 ssh -T git@codeup.aliyun.com pause