设置 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 ...
随机推荐
- chrome 浏览器插件开发
一.chrome 浏览器插件开发是什么: 1 从技术上说插件只是一个存在于本地的一个网站.所以呢在插件开发的过程中用到的技术无非是 javascript .html .css . 二.把当前活动页面的 ...
- RVM(ruby version manage)安装指南
一.安装需要3步gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \c ...
- atitit.编程语言会形成进化树--哪些特性会繁荣??通才还是专才的选型 现代编程语言的特性总结
atitit.编程语言会形成进化树--哪些特性会繁荣??通才还是专才的选型 现代编程语言的特性总结 1. 有一种观点,编程语言就像物种,会形成进化树,有的分支会死掉. 多年之后,你觉得语言会演化成什 ...
- CLoadScene类
#ifndef __LOADSCENE_H__ #define __LOADSCENE_H__ #include "GameFrameHead.h" class CGameScen ...
- Selenium - Switch & Select Api
一.多表单切换 driver.switch_to.frame() iframe :直接将一个html 页面嵌入另一个html 页面中 switch_to.frame() 默认可以直接取表单的id ...
- 【C/C++语言】int 在计算机内部的存储
int在32位计算机中占4个字节,主要是想弄清楚这4个字节的在内存中存放的顺序. #include <iostream> using namespace std; typedef stru ...
- 每日英语:How to find the career of your dreams
The fate described by Dostoyevsky is a nightmare we all hope to escape. But we're surrounded by nays ...
- 虚拟机下安装centos7方法,修改系统语言为简体中文的方法
说明 自己装系统时一般都可以自定义选择系统语言.可是云端服务器一般都是安装好的镜像,默认系统语言为英文,对于初学者可能还会有搞不懂的计算机词汇.这里简单说一下centos7怎么修改系统语言为中文. 虚 ...
- JS学习笔记(3)--json格式数据的添加,删除及排序方法
这篇文章主要介绍了json格式数据的添加,删除及排序方法,结合实例形式分析了针对一维数组与二维数组的json格式数据进行增加.删除与排序的实现技巧,需要的朋友可以参考下 本文实例讲述了json格式 ...
- Ubuntu 12.04 Subversion及GUI客户端RabbitVCS安装
(经过一天的使用,发现pygtk的内存泄漏问题严重影响使用,需要打一下deepin ui做的补丁:https://github.com/linuxdeepin/deepin-ui) 1. 类似Tort ...