Linux 中的公钥和私钥应用

来源:互联网 发布:java websocket服务器 编辑:程序博客网 时间:2024/06/12 22:26

(一)公钥私钥处理机制 

(1)原理 

 1.非对称密钥就是一对密钥-公钥和私钥。  

 2.私钥由系统中每个人自己持有,一般保存在自己的电脑里或u盘里。  
 3.公钥则在网络上传递,就是可以传递给通信中的对方,也就意味这可以被黑客截获。  
 4.用某个人的私钥加密的数据只有用那个人的公钥解密,同样用公钥加密的数据也只有用私钥解密。  
ssh-keygen 创建公钥和密钥。 
ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。
ssh-copy-id 也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限 。

(2)创建具体步骤 :

(1) 在本地主机上创建公钥和密钥 ssh-key-gen
(2)用ssh-copy-id 把本地公钥复制到远程主机上 
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.3
(3) 登录 

(二) 使用SecureCRT设置linux系统登录的ssh公钥认证

1.修改ssh配置文件/etc/ssh/sshd_config

RSAAuthentication yes                             //使用RSA加密算法
PubkeyAuthentication yes                         //使用公钥认证
AuthorizedKeysFile     .ssh/authorized_keys     //允许的公钥存放的文件,放在用户主目录下
PasswordAuthentication no                      //禁止密码验证登录,如果启用的话,RSA认证登录就没有意义

2 生成公钥/密钥对

  使用SecureCRT的"工具->创建公钥" 即可,加密算法选择RSA,因为sshd配置文件中选择了RSA算法
   生成密钥文件Identity和公钥文件Identity.pub。其间会提示输入通行短语,用于保护密钥,需要记住,以后每次连接时使用。也可以为空。

3.上传公钥

将公钥Identity.pub上传到ssh服务器系统的/home/user/.ssh内,我是使用root账号的,
所以路径为/root/.ssh,如果没有.ssh目录,自行创建.ssh文件夹

4.openssh不支持SecureCRT生成的密钥格式,需要进行类型转换:

ssh-keygen -i -f Identity.pub >>authorized_keys
chmod 600 authorized_keys

5.重启sshd服务

service sshd restart

(三) 搭建自己的git 服务器

(1)centos 上安装git 

(2)配置git 用户并且设置密码

useradd -m git  
passwd git   // 

(3)git 仓库目录创建,并且添加权限控制 

mkdir /home/git/repositories # 最好使用repositories作为文件夹名称,这样可以简化后面的操作  
chown git:git /home/git/repositories  
chmod 755 /home/git/repositories  

(4) 初始化仓库

su git  
cd /home/git/repositories
mkdir test
    cd code  
git --bare init    // 初始化仓库

(5) 客户端测试 

  git clone git@120.27.32.48:/home/git/repositories/test     
(6) 为了省去每次都要输入密码,采用公钥形式

(1) 在本地主机上创建公钥和密钥
使用git 客户端  ssh-keygen -t rsa 
此时会在 C:\Users\PA\.ssh  生成 id_rsa(私钥) id_rsa.pub(公钥)
(2)服务器
把公钥上传到服务器中 /tmp/id_rsa.pub  ,  cat id_rsa.pub >  /home/git/repositories/test/.ssh/authorized_keys

(6)
打开文件/etc/ssh/sshd_config
RSAAuthentication yes            #开启RSA认证功能
PubkeyAuthentication yes      #开启公匙认证
StricModes no                          #据说不改会强制要求登录用户和文件拥有者用户相同
/data1/www/code/code/

0 0