设置 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 服务器

参考:

设置 SSH Key 登录服务器和 Git 服务器的更多相关文章

  1. SSH密钥登录让Linux VPS/服务器更安全

    查看 /var/log 登录日志文件,突然发现服务器被人扫描端口在进行暴力攻击 平常登录服务器,都是使用用户密码登录,看来这样的做法并不安全,不得不关闭密码登录了. 总结了一个putty使用密钥自动登 ...

  2. Git使用之设置SSH Key

    设置SSH Key 1.    检查是否已经有SSH Key. $cd ~/.ssh 如果说没有这个目录,就直接看第三步 2.    备份 3.    生成一个新的SSH. $ssh-keygen - ...

  3. github-如何设置SSH Key

    设置SSH Key 在注册好github账号后,打开你的电脑桌面上的一个文件夹,这就建立了一个本地工作库,在里面点击鼠标右键,找到你的git bash here-点击开,如图所示:进行下面操作: 输入 ...

  4. Linux配置使用SSH Key登录并禁用root密码登录(替换同理)

    Linux系统大多说都支持OpenSSH,生成公钥.私钥的最好用ssh-keygen命令,如果用putty自带的PUTTYGEN.EXE生成会不兼容OpenSSH,从而会导致登录时出现server r ...

  5. Linux配置使用SSH Key登录并禁用root密码登录

    Linux系统大多数都支持OpenSSH,生成公钥.私钥的最好用ssh-keygen命令,如果用putty自带的PUTTYGEN.EXE生成会不兼容OpenSSH,从而会导致登录时出现server r ...

  6. 在服务器搭建git服务器

    服务端操作 安装Git及创建用户组.用户 123 yum install gitgroupadd gitadduser git -g git 禁止用户git登录 修改/etc/passwd文件: 找到 ...

  7. 本地ssh key连接多个git账号

    在开发过程中,可能需要在本地同时连接到多个gitlab账户,但是一个用户的ssh key只能连接到一个git账户,这就需要创建多个ssh key,分别连接到不同的账户.具体步骤如下: 1.生成ssh ...

  8. linux下ssh key秘钥登陆远程服务器设置

    本地的用户名需要和ssh服务器的用户名一致 1.在Server服务器上加载私钥文件ssh-add wang_rsa 2.如果系统提示:could not open a connection to yo ...

  9. 创建SSH keys用于添加到Git服务器上

    SSH keys SSH key 可以让你在你的电脑和Git服务器之间建立安全的加密连接.先执行以下语句来判断是否已经存在本地公钥: cat ~/.ssh/id_rsa.pub 如果你看到一长串以 s ...

随机推荐

  1. django abstract base class ---- 抽象基类

    抽象蕨类用于定义一些同享的列.类本身并不会在数据库端有表与之对应 一.例子: 1.定义一个叫Person 的抽象基类.Student 继承自Person from django.db import m ...

  2. unity, stateMachine, change state name

    如图,假设wingsLayer下有个state,叫“New State“,现在想给它改名,则一定要保证当前wingsLayer为选中状态,然后才能在Inspector中可以为其改名.否则若当前选中的不 ...

  3. mount -o remount,rw / (这是个求命的命令)

    当系统无法启动的时候.我们会前进入单用户模式(正常情况下单用户莫式是权限是正常的,只在在无法启动的情况下, 再进入单用户模式,权限才会是只读),这时候没有对文件的修改权限(所有的文件都是只读) 用这条 ...

  4. 用wget做站点镜像

    用wget做站点镜像 -- :: 分类: LINUX # wget -r -p -np -k http://xxx.edu.cn -r 表示递归下载,会下载所有的链接,不过要注意的是,不要单独使用这个 ...

  5. lodop简单入门教程

    lodop简单入门 1 安装(这个不介绍,下载安装即可) 声明只能装windows,linux不能装,所以linux 服务器要使用直接使用http://localhost:8000/CLodopfun ...

  6. linux和windows动态库加载路径区别

    # linux和windows动态库加载路径区别 ### 简介------------------------------ linux加载动态库的路径是系统目录/lib和/usr/lib.- wind ...

  7. org.apache.hadoop.hbase.DoNotRetryIOException: Class org.apache.phoenix.coprocessor.MetaDataEndpointImpl cannot be loaded Set hbase.table.sanity.checks to false at conf or table descriptor if you want

    https://stackoverflow.com/questions/38495331/apache-phoenix-unable-to-connect-to-hbase 这个坑不该啊 首选配置hb ...

  8. git学习(一):git的版本库在哪儿

    查看版本 git --version # 查看git的版本 设置或者查看用户名和邮箱 git config --global user.name "tuhooo" // 如果后面没 ...

  9. string--C++ STL 学习

    C++STL提供了string基本字符系列容器来处理字符串,可以把string理解为字符串类,提供了添加删除\替换\查找和比较等丰富的方法. 使用string容器,需要包含头文件声明#include ...

  10. angularJs多文件上传

    <input type="file" id="file{{$index}}" class="file{{$index}}" ngf-s ...