设置 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 服务器
参考:
- 《Modern PHP》 7.Procisioning - Server Setup - SSH Key-Pair Autherntication
- Git on the Server - The Protocols
- 2 Simple Steps to Set up Passwordless SSH Login on Ubuntu
设置 SSH Key 登录服务器和 Git 服务器的更多相关文章
- SSH密钥登录让Linux VPS/服务器更安全
查看 /var/log 登录日志文件,突然发现服务器被人扫描端口在进行暴力攻击 平常登录服务器,都是使用用户密码登录,看来这样的做法并不安全,不得不关闭密码登录了. 总结了一个putty使用密钥自动登 ...
- Git使用之设置SSH Key
设置SSH Key 1. 检查是否已经有SSH Key. $cd ~/.ssh 如果说没有这个目录,就直接看第三步 2. 备份 3. 生成一个新的SSH. $ssh-keygen - ...
- github-如何设置SSH Key
设置SSH Key 在注册好github账号后,打开你的电脑桌面上的一个文件夹,这就建立了一个本地工作库,在里面点击鼠标右键,找到你的git bash here-点击开,如图所示:进行下面操作: 输入 ...
- Linux配置使用SSH Key登录并禁用root密码登录(替换同理)
Linux系统大多说都支持OpenSSH,生成公钥.私钥的最好用ssh-keygen命令,如果用putty自带的PUTTYGEN.EXE生成会不兼容OpenSSH,从而会导致登录时出现server r ...
- Linux配置使用SSH Key登录并禁用root密码登录
Linux系统大多数都支持OpenSSH,生成公钥.私钥的最好用ssh-keygen命令,如果用putty自带的PUTTYGEN.EXE生成会不兼容OpenSSH,从而会导致登录时出现server r ...
- 在服务器搭建git服务器
服务端操作 安装Git及创建用户组.用户 123 yum install gitgroupadd gitadduser git -g git 禁止用户git登录 修改/etc/passwd文件: 找到 ...
- 本地ssh key连接多个git账号
在开发过程中,可能需要在本地同时连接到多个gitlab账户,但是一个用户的ssh key只能连接到一个git账户,这就需要创建多个ssh key,分别连接到不同的账户.具体步骤如下: 1.生成ssh ...
- linux下ssh key秘钥登陆远程服务器设置
本地的用户名需要和ssh服务器的用户名一致 1.在Server服务器上加载私钥文件ssh-add wang_rsa 2.如果系统提示:could not open a connection to yo ...
- 创建SSH keys用于添加到Git服务器上
SSH keys SSH key 可以让你在你的电脑和Git服务器之间建立安全的加密连接.先执行以下语句来判断是否已经存在本地公钥: cat ~/.ssh/id_rsa.pub 如果你看到一长串以 s ...
随机推荐
- unity,List元素第一个成员最好是string类型
例如 List<CmyObj> m_list=new List<CmyObj>(); class CmyObj{ string m_name; int m_value; } c ...
- atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe
atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe exe4j vs nativej 1. step1读取配置文件 1 1.1. regular mode . ...
- libjpeg.a exists or that its path is correct
Android NDK: ERROR:/cygdrive/e/cocos2d-x/code/cocos2d-2.1rc0-x-2.1.3/HelloTest1/proj.android/../../c ...
- CSS3多背景应用
/*多背景应用*/ .wrapper { width: 640px; height: 1000px; margin: auto; background: url(./images/head.jpg) ...
- jquery 修改 bootstrap模态框的宽度并且居中
1.定义模态框 <div class="modal fade" id="Project_Cell_Modal" tabindex="-1&quo ...
- Maven实战(插件管理)
1.前言 近期在做项目中,用到了Maven来管理项目,当理解了Maven的基础知识后,忽然看到好多的插件信息,所以在此总结一下.其有使用方法基本上都一样. 2.源码打包插件 我们能够在Apache的站 ...
- 使用jsonp处理跨域问题
调用web接口,get请求,发现提示:No 'Access-Control-Allow-Origin' header is present on the requested resource. 这个和 ...
- Elk使用笔记(坑)(2017-02-17更新)
Elk使用笔记(坑)(2017-02-17更新) 作者: admin 时间: 2016-12-07 分类: 工具,数据 主要记录使用过程终于到的一些坑和需要注意的地方,有些坑想不起来了,以后再完善补上 ...
- dp - HNU 13404 The Imp
The Imp Problem's Link: http://acm.hnu.cn/online/?action=problem&type=show&id=13404&cour ...
- Merging an upstream repository into your fork
1. Check out the branch you wish to merge to. Usually, you will merge into master. $ git checkout ma ...