详解:实现SSH协议免密码登录步骤

SSH概念:
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。

对称加密算法
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

我们有一个重要文件,进行加密,不希望给没有权限的人来看,比如常见的方式,压缩的时候进行加密压缩,解压的时候就需要输入解压密码。(这里明文就是我们的重要文件,密钥就是压缩工具,加密解密都使用的是同一个密码)。

这种方法最大的问题就是加密和解密使用了相同的密码。更先进的方法就是:非对称加密算法。

非对称加密算法
非对称加密算法,又名“公开密钥加密算法”,需要生成2个密钥:公开密钥(public key)和私有密钥(private key)。

实例:

公钥就是可以公开,私钥就是只能自己使用。A用户使用B用户的公钥和自己的公钥进行文件加密(我想要谁有权限看这个文件,就使用谁的公钥),此时文件传送给B,B只需要拿自己的密码和自己的私钥一起解密,就可以查看这个文件,整个过程B不需要知道A的密码。这个过程主要是为了保存A的密码安全,不需要告诉B密码。

SSH命令
# 远程管理指定Linux服务器
ssh 用户名@ip
# 下载文件
scp [-r] 用户名@ip:文件路径 本地路径
# 上传文件
scp [-r] 本地文件 用户名@ip:上传路径

免密码登录方案之SSHkey
实现原理:

客户端向服务器端发送SSH连接的请求时,首先客户端生成自己的公钥和私钥,然后将公钥提供给服务器端的验证文件:authorized_key追加保存,从而实现免秘钥登录。

1)检查是否安装了ssh相关软件包(openssh-server + openssh-clients + openssh)
$yum list installed | grep ssh

2)检查是否启动了sshd进程
$>ps -Af | grep sshd

3)在client侧生成公私秘钥对。
$>ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa

4)生成~/.ssh文件夹,里面有id_rsa(私钥) + id_rsa.pub(公钥)

5)追加公钥到~/.ssh/authorized_keys文件中(文件名、位置固定)
$>cd ~/.ssh
$>cat id_rsa.pub >> authorized_keys

该步骤利用了SSH传输协议,必须将客户端的公钥文件,保存到服务器端的authorized_keys文件中。

6)修改authorized_keys的权限为644.
$>chmod 644 authorized_keys

备注:这是CentOS系统下的一个bug,必须设置权限为644,默认是664。

7)测试
$>ssh localhost