【git】ssh代理实现免密登录

使用ssh密钥,如果有人可以访问您的计算机,他们也可以访问使用该密钥的每个系统。为了保证安全,可以向ssh密钥中添加密码。通过ssh代理来安全地保存您的密码,这样就不必重新输入它。

1.添加或更改秘钥短语

可以通过键入以下命令来更改现有私钥的密码,而不必重新生成密钥对:

$ ssh-keygen -p

如果您的密钥已经有一个密码,则在您可以更改为新密码之前,系统会提示您输入密码。否则,您可以添加新的密码到秘钥中。会出现如下提示内容,请按照[]中的内容操作:

Start the SSH key creation process
Enter file in which the key is (/Users/you/.ssh/id_rsa): [回车]
Key has comment '/Users/you/.ssh/id_rsa'
Enter new passphrase (empty for no passphrase): [输入您的密码]
Enter same passphrase again: [再次输入密码]
Your identification has been saved with the new passphrase.

2.在git上自动启动ssh代理

  • Github桌面应用程序用户:则请忽略本节操作,因为Github桌面自动为您启动SSH代理。
  • Git shell用户:请按照以下步骤自动运行SSH代理。

首先,将下面的内容复制到粘贴到您的电脑上的~/.profile~/.bashrc文件中,即Administrator目录下的.profile文件中。若不存在该,则新建。这里,~代表当前用户目录,默认是Administrator

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

如果您的私钥不存储在默认位置之一~/.ssh/id_rsa~/.ssh/id_dsa)中,则需要告诉您的SSH身份验证代理在哪里找到它。要向SSH代理添加密钥,请键入ssh-add ~/path/to/my_key。有关更多信息,请参见“生成一个新的SSH密钥并将其添加到SSH代理”。

这里,如果此时我们重新打开一个git bash,可以看到:

本文翻译自:Working with SSH key passphrases

发布了192 篇原创文章 · 获赞 318 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/zyxhangiian123456789/article/details/101950094