3 回答
TA贡献1982条经验 获得超2个赞
试试ssh-add
,你需要ssh-agent
运行并持有你的私钥
(好的,回应更新的问题,你首先运行ssh-keygen
生成一个公钥和私钥,如Jefromi所 解释的。你把公钥放在服务器上。你应该使用密码,如果你没有,你有相同的平原- 私钥中的文字密码。但是当你这样做时,你需要作为一个实际问题ssh-agent
,如下所述。)
您希望ssh-agent
在登录时在后台运行。登录后,想法是只运行ssh-add
一次,以便为代理提供密码,以解码密钥。然后代理只是在你的钥匙解锁和加载的情况下坐在内存中,每次你在某个地方ssh时都可以使用。
然后,所有ssh-family命令1将咨询代理并自动使用您的私钥。
在OSX(错误,macOS)上,GNOME和KDE系统ssh-agent
通常会自动为您启动。我将详细介绍细节,就像我一样,你也有一个Cygwin或其他Windows环境,你肯定不会这样做。
从这里开始:man ssh-agent
。
有多种方法可以自动运行代理。如手册页所述,您可以运行它,使其成为所有登录会话的其他进程的父级。这样,它提供的环境变量将自动存在于所有shell中。当您(稍后)调用ssh-add
或ssh
两者都可以访问代理时,因为它们都具有带魔术套接字路径名的环境变量或其他任何内容。
或者,您可以将代理作为普通子代运行,将环境设置保存在文件中,并在启动时在每个shell中获取该文件。
我的OSX和Ubuntu系统自动执行代理启动设置,因此我所要做的就是运行ssh-add
一次。尝试运行ssh-add
并查看它是否有效,如果是,那么每次重启只需要执行一次。
我的Cygwin系统需要手动完成,所以我在我.profile
和我的.bashrc
源头做了这个.profile
:
. .agent > /dev/nullps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || { ssh-agent > .agent . .agent > /dev/null}
该.agent
文件由脚本自动创建; 它包含环境变量定义和导出。上面尝试获取.agent文件,然后尝试ps(1)
代理。如果它不起作用,它将启动代理并创建新的代理文件。您也可以运行ssh-add
,如果失败则启动代理。
1.甚至本地和偏远sudo
的正确的pam扩展。
TA贡献1798条经验 获得超3个赞
与GitHub有类似的问题,因为我使用的是HTTPS协议。要检查您正在使用的协议,请运行
git config -l
并查看以remote.origin.url
。开头的行。切换协议
git config remote.origin.url git@github.com:your_username/your_project.git
TA贡献1900条经验 获得超5个赞
这是关于配置ssh,而不是git。如果您还没有,则应使用ssh-keygen
(使用空白密码)来创建密钥对。然后,使用将公钥复制到远程目标ssh-copy-id
。除非你需要多个密钥(例如,一个更安全的密钥用于其他目的)或者你有一些非常奇怪的多重身份的东西,它就是这么简单:
ssh-keygen # enter a few times to accept defaultsssh-copy-id -i ~/.ssh/id_rsa user@host
编辑:你应该只是阅读DigitalRoss的答案,但是:如果你使用带密码的密钥,你需要使用它ssh-add <key-file>
来添加它们ssh-agent
(ssh-agent
如果你的发行版还没有为你运行的话,那么显然会启动它)。
- 3 回答
- 0 关注
- 680 浏览
添加回答
举报