以下说明在Windows环境中,使用Git for Windows、TortoiseGit、IDEA等Git客户端时,使用SSH密钥方式访问Git服务器,不输入密码。
以下使用OpenSSH作为SSH客户端,所需使用的软件下载地址如下。
OpenSSH下载地址:https://www.mls-software.com/opensshd.html
Git for Windows下载地址:https://git-scm.com/download/win
TortoiseGit下载地址:https://tortoisegit.org/download/
IDEA下载地址:https://www.jetbrains.com/idea/download/#section=windows
OpenSSH建议安装7.5p1-1或更高的版本。
OpenSSH安装完毕后,会自动添加至环境变量Path中,不需要手工添加。
使用OpenSSH的ssh-keygen命令生成SSH密钥对。
打开Windows命令行窗口,在任意目录,执行以下命令:
ssh-keygen -t rsa -b 4096 |
提示“Enter passphrase”“ Enter same passphrase again”时,直接回车。
提示信息如下所示:
C:\Users\user>ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/ user /.ssh/id_rsa.pub. The key fingerprint is: SHA256:... user@MACHINE The key's randomart image is: +---[RSA 4096]----+ |+o .. . ... | | .. o +.. | |. ... . | | ..*.. * ... | | +.o.= .= | | * . =.*.+ o | |= o o= . | |o. . =.. | |. .+ | +----[SHA256]-----+ |
当执行完毕后,会在当前用户目录的.ssh目录生成文件,如Windows 7中为“C:\Users\[用户名]\.ssh”,可执行“cd %USERPROFILE%\.ssh”进入。
生成的文件包括id_rsa、id_rsa.pub,分别为私钥与公钥文件。
以Github为例,打开settings菜单,“SSH and GPG keys”页面,点击“New SSH key”按钮,出现如下界面:
Title可输入任意值。
Key输入上一步生成的id_rsa.pub公钥文件内容,内容以“ssh-rsa”开头。
完成添加后,在Git客户端可以正常执行pull/push等操作,不需要输入密码。
TortoiseGitPlink是TortoiseGit默认的SSH客户端,在进行pull/push等操作时,需要启动pageant.exe程序,并选择使用的密钥,不是特别方便。
可将TortoiseGit默认的SSH客户端修改为OpenSSH,会使用上述配置的SSH密钥,在进行pull/push等操作时,不需要启动pageant.exe程序,也不需要选择使用的密钥,如下所示:
在“运行”或控制台窗口中执行“ tortoisegitproc /command:firststart ”命令,打开TortoiseGit配置窗口,点击下一步到“Authentication and credential store”窗口,选择SSH客户端为OpenSSH,如下图所示。
完成以上修改后,可打开TortoiseGit的Settings窗口检查是否生效,打开Network菜单,SSH client应为ssh.exe。也可直接将SSH client修改为ssh.exe。
Git for Windows安装完毕后,若没有添加至环境变量Path中,需要手工添加。
上述步骤执行完毕后,Git for Windows不需要进行配置,即可正常执行pull/push等操作。
上述步骤执行完毕后,IDEA不需要进行配置,即可正常执行pull/push等操作。
可使用项目的Git菜单的pull/push等功能,或在Terminal中执行Git命令,如下所示: