git下SSH配置问题

只需要向网站提交SSH产生的公钥即可。在提交后就可以用SSH协议来下载代码。

但不论是否输入SSH的公钥,在用HTTP方式下载代码时,都需要输入对应托管平台的账号和密码。

可以多次生成公私钥,但是要配对使用,只需要放在C:\Users\microdsy\.ssh就可以了注意默认名称要是id_rsa和id_rsa.pub

每个公私钥对在每个托管平台只能使用一次。如一台电脑上要对应多个项目账号,则需要使用多账号配置。参见我的另一篇CSDN博客。

一台电脑有唯一的known-hosts文件,是自动生成的文件。


linux下经常遇到known_hosts问题,例如git clone一个ssh协议的远程库,就会交互询问是否接受远程服务器的fingerprint,当执行一些自动化脚本时就得通过expect来处理这种情况。

今天搜索了一下,整理了相关处理办法。

linux需要接受和校验fingerprint的原因是避免受到DNS Hijack之类的攻击。具体原理是第一次访问远程服务器时从远程服务器接受一个fingerprint,实际上是一个rsa或者dsa公钥,将这个公钥保存在~/.ssh/known_hosts里,下次访问该服务器时就会通过这个公钥校验,如果校验不通过就会发出警告。

如果要让ssh不去校验fingerprint有两种办法,一个是ssh时加上-o StrictHostKeyChecking=no参数,这只会影响本次操作:

1 ssh -o StrictHostKeyChecking=no username@hostname.com

另外永久解决方案是在/etc/ssh/ssh_config或者~/.ssh/config里配置StrictHostKeyChecking no,修改哪个文件取决于你想影响全局还是当前用户。

另外一种方案是预先将远程服务器的fingerprint存入known_hosts,这样就不会出现询问的情况。

1 ssh-keygen -R [hostname]
2 ssh-keygen -R [ip_address]
3 ssh-keygen -R [hostname],[ip_address]
4 ssh-keyscan -t rsa [hostname],[ip_address] >> ~/.ssh/known_hosts
5 ssh-keyscan -t rsa [ip_address] >> ~/.ssh/known_hosts
6 ssh-keyscan -t rsa [hostname] >> ~/.ssh/known_hosts

ssh-keygen是将已存在的服务器公钥清除,避免重复添加。

ssh-keyscan则是获取远程服务器的fingerprint,如果还想获取dsa公钥则将rsa改成rsa,dsa

参考:

http://serverfault.com/questions/132970/can-i-automatically-add-a-new-host-to-known-hosts

http://blog.csdn.net/yasaken/article/details/7348441

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值