我的专题Java技术升华

SSH免密登录配置

2018-05-12  本文已影响91人  叩丁狼教育

作者:贺圣君,叩丁狼高级讲师。原创文章,转载请注明出处。

1 SSH协议的基本介绍

对于我们关于数据传递相关的协议可能知道有ftp,telnet等协议,对于使用ftp和telnet等相关协议,其实是不安全的,因为这些协议在传输的过程中是明文传递的,换句话说,对于使用ftp和telnet等相关协议传输的数据,只要别人在网络上获取到对应的数据报文,就知道我们所传递的内容,这个安全性有要求的数据显然不是很好的传递机制,那么接下来我们介绍一个传输数据比较安全的SSH协议

​ SSH协议传递的数据不在是明文传递,传递的而是加密后的数据,所以就算数据在网络上被人获取到,也无法获取到真正的数据内容,保证的数据的安全性

​ 对于SSH协议,在我们Linux服务器上应用的非常的多

2 SSH免密工作原理

01_免密登录流程图.png
  1. 在服务器使用ssh-keygen命令生成密钥对,并且保存在指定的路径id_rsa和id_rsa.pub,保存在用户家目录的.ssh目录里面(隐藏目录)
  2. 把公钥id_rsa.pub传递到服务器B的授权列表
  3. 通过公钥加密进行数据传输

3 配置步骤

3.1 安装软件

一般的Linux服务器都会安装SSH的服务端程序,但是使用最小化安装的时候没有SSH客户端,我们可以通过yum命令安装客户端,虽然在免密登录用不到,但是当我们使用scp等命令的时候,如果没有客户端会提示连接失败

[root@lab301 .ssh]# yum  install -y  openssh-clients.x86_64
#输入ssh 然后按tab补全提示
# ssh 客户端连接命令
# sshd ssh服务端后台程序
# ssh-keygen 用于生成密钥对
# ssh-copy-id 可以把公钥拷贝到指定的主机的授权列表
[root@lab100 ~]# ssh
ssh          ssh-add      ssh-agent    ssh-copy-id  sshd         ssh-keygen   ssh-keyscan

3.2 生成密钥对

# 在执行该命令的时候会有三个提示信息,直接敲回车即可
[root@lab301 .ssh]# ssh-keygen
[root@lab100 ~]# ssh-keygen
Generating public/private rsa key pair.
# 回车, 表示生成的密钥存放路径为/root/.ssh/id_rsa
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
# 是否需要密码认证, 回车, 不需要
Enter passphrase (empty for no passphrase):
#回车
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
# 生成公钥
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
0e:49:05:6d:96:83:7f:bc:66:db:2c:58:62:d4:45:ab root@lab100
The key's randomart image is:
# 默认使用RSA 2048 长度 现在没有人能破解该算法
+--[ RSA 2048]----+
|      .+.. ..    |
|      ..*   ..   |
|      .+ + ..    |
|     . .o +.     |
|      o.S.E.     |
|       oo =      |
|       ..* +     |
|        . o o    |
|           .     |
+-----------------+

# id_rsa 私钥 id_rsa.pub公钥
[root@lab100 ~]# ls /root/.ssh/
id_rsa  id_rsa.pub

3.3 把公钥传输到服务器B的授权列表

当我们把公钥存放的服务器B的授权列表后,我们在登录服务器B的时候,服务器B会检查对应的授权列表,如果发现是信任的连接,则可以免密登录,加密传输数据

# 通过这个命令可以自动的把公钥添加到lab302的授权列表 在后面可能需要输入lab302的密码
# 如果需要制定用户名格式为 ssh-copy-id test@lab302 则指定用户名为test
# 其中lab302 必须在/etc/hosts文件中已经正确配置主机名
[root@lab100 ~]# ssh-copy-id  lab302
The authenticity of host 'lab302 (192.168.158.232)' can't be established.
RSA key fingerprint is ad:69:89:09:05:05:48:fd:63:47:11:37:a0:7d:44:53.
# 确认是否连接 yes 继续连接
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'lab302,192.168.158.232' (RSA) to the list of known hosts.
# 如果lab302主机的root用户的密码
root@lab302's password:
Now try logging into the machine, with "ssh 'lab302'", and check in:
# 添加校验在授权列表
  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

3.4 验证SSH

# 直接通过ssh命令 使用root用户登录lab302
[root@lab301 .ssh]# ssh lab302
Last login: Fri May 11 17:50:38 2018 from 192.168.158.1
# 已经成功登录到lab302 如果需要退出,使用exit
[root@lab302 ~]#
[root@lab302 ~]# exit
logout
Connection to lab302 closed.
[root@lab301 .ssh]#
WechatIMG7.jpeg
上一篇下一篇

猜你喜欢

热点阅读