之前介绍过这款轻量级的版本管理工具,Mercurial。除了在windows平台具有上佳表现,在Linux下也是非常便捷。
本文介绍如何在Linux的命令行工作台下,实现Mercurial客户端命令hg与mercurial-server的无密码输入安全连接。所用的主要工具是:ssh-agent。
1. 创建你的RSA密钥对 cd ~/. ssh-keygen -t rsa
然后,对自己系统用户密钥对存放目录.ssh的权限进行安全调整:
chmod 700 $HOME/.ssh chmod 600 $HOME/.ssh/id_rsa
注:下面操作假设你自己的系统用户的.ssh目录下保存的密钥对是:id_rsa(私钥)和id_rsa.pub(公钥)。
2. 把公钥发送给代码库管理员
从你的.ssh/目录下找到id_rsa.pub,发送给mercurial-server系统管理员。系统管理员确认已配置好你的用户-代码库权限。
3. 用ssh-agent缓存你的私钥
通过ssh-agent,你可将上述步骤中生成的私钥缓存到内存中,当Mercurial客户端命令hg与代码库服务器交互时,你的shell环境即可自动通过ssh-agent拿出你的RSA私钥,通过SSH2连接与服务器进行身份验证、加密/解密的操作。
启动ssh-agent:
eval $(ssh-agent)
把私钥交给ssh-agent缓存,因为是第一次操作密钥,系统会提示输入密钥安全密码:
ssh-add ~/.ssh/id_rsa
用hg命令直接与mercurial-server代码库进行交互。此时,系统不应该提示输入密钥安全密码。例如:把本地代码库用hg clone命令复制到服务器端(创建服务器端代码库,如果你有init权限的话):
hg clone myrepo ssh://hg@mycompany_hg_repo_host.com/myrepo
当你完成与代码库服务器交互操作后,可运行一下命令终止ssh-agent的运行:
ssh-agent -k