辽宁铁岭人,现居大连。1970年生。 先后供职于 中国国际海运网、大连学堂科技、大连华仁视线网络科技有限公司、大连中科海云科技有限公司,任职技术总监。 精通PHP、JAVA、Javascript、HTML、CSS等网络编程技术及Linux操作系统。 精通面向对象编程、设计模式、重构及互联网产品设计。
分类: LINUX
2011-10-11 15:47:15
对应Mercurial服务器一文,客户端除了支持Windows平台外,当然还支持Linux或*nix类操作系统下命令行的Mercurial客户端操作;相对而言,有命令行癖好的童鞋们(the CLI geeks)会发现*nix下的ssh-agent + hg操作来得更简单。
本文介绍如何在Linux或*nix类的命令行工作台下,实现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