zoukankan      html  css  js  c++  java
  • 设置 SSH Key 登录服务器和 Git 服务器

    设置 SSH Key 登录服务器

    通过 ssh 登录服务器,一直都是用的账号和密码,今天看到一篇文章说这样不安全,使用 ssh key 的方式登录则是更好的选择,因此,研究实践了一下,并记录在这里。

    Ssh key 的基本原理是这样的:在你的本机上创建两个Key文件,一个是私钥,一个是公钥,私钥放在本地,公钥放在远程服务器。当你通过ssh key登录到远程服务器时,远程服务器使用公钥创建了一个加密的随机消息,然后发送到本地机器,本地机器使用私钥解密消息,发送解密的消息到远程服务器。远程服务器验证这个解密后的消息,然后授权访问。实际过程比这个复杂,但我们这里理解大概就可以了。

    使用下面的命令创建Key文件:

    ssh-keygen
    

    按照界面上的提示操作,最终生成了两个文件:~/.ssh/id_rsa.pub(公钥) 和 ~/.ssh/id_rsa(私钥)。私钥文件放在本地机器,并且要保密,不能让别人知道。公钥要复制一份放到远程服务器上面。

    我们使用scp命令来复制公钥文件到服务器:

    scp ~/.ssh/id_rsa.pub <your username>@<your servername/ip>:
    

    '''注意:末尾有一个:冒号!'''这个命令把公钥文件上传到了服务器 /home 目录下面。

    下一步,使用该用户名登录服务器,检查 ~/.ssh 目录是否存在,不存在则创建之:
    mkdir ~/.ssh

    下一步,创建 ~/.ssh/authorized_keys 文件:

    touch ~/.ssh/autorized_keys
    

    这个文件将包含一系列允许登录本机的公钥。

    然后将公钥的内容加到 ~/.ssh/authorized_keys 文件中:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    

    最后,我们修改相关目录的权限,只允许 (假设此处用户名为 feiffy) 用户访问。

    chown -R feiffy:feiffy ~/.ssh
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

    大功告成,现在可以直接 ssh 登录远程服务器,而不需要输入密码了。

    另外,使用 scp 命令传输文件到远程服务器也不需要密码了。

    设置 SSH Key 登录 Git 服务器

    有了上面的操作基础之后,就会发现,设置 SSH Key 登录 Git 服务器其实原理是一样。

    这里先讲我个人的 Git 远程库的设置,这与 Github 有所不同。

    我自己的远程服务器上面的 Git 仓库是用 git init --bare 命令建立的,是这样建立的:

    # 登录远程服务器
    cd /home/git
    mkdir repo.git
    cd repo.git
    git init --bare
    

    可以看到我使用的是 Git 用户创建的远程仓库,在本机上克隆该仓库只需运行下列命令即可

    git clone git@example.com/repo.git
    

    然后需要输入Git用户的密码。现在的目的是设置使用 ssh key 登录,而不需要输入密码。

    既然原理与上一篇中的一样,那就不赘述了,为了方便这里直接使用上面生成的两个Key文件:id_rsa,id_rsa.pub,把公钥id_rsa.pub复制到远程服务器的 /home/git/ 目录下面,注意与上文的区别只是不同用户名的区别,其他操作都是一样的。

    然后本地连接使用下面的命令,就不需要密码了。

    git clone ssh://git@example.com/home/git/repo.git
    

    PS - 个人博客原文:设置 SSH Key 登录服务器和 Git 服务器

    参考:

  • 相关阅读:
    NYOJ题目28大数阶乘
    网页小图标设置
    Sass中文乱码问题(手动编译和watch编译)
    设计模式之构建者模式(Builder):初步理解
    Struts2之类型转换器
    css设置网页文本选中样式
    由超市临时储物柜引发的一点设计随想...
    前端资源相关参考资料
    Struts2拦截器之ExceptionMappingInterceptor(异常映射拦截器)
    Struts2之OGNL
  • 原文地址:https://www.cnblogs.com/feiffy/p/8995003.html
Copyright © 2011-2022 走看看