ssh,即Secure Shell,它是把所有传输的数据都进行了加密。它有两个版本,即1.x和2.x,其中只有Open SSh是免费的。从客户端来看,ssh有两种级别的安全验证,一是口令验证(只要你知道账户和密码,就能登录,并且所传输的数据都是加密的),二是密匙验证(自己为自己创建一对密匙,然后把公用密匙放到服务器上;如果你连接服务器的时候,客户端首先发送一个请求,里面包括公用密匙,请求服务器进行验证;服务器接收到请求之后,就会在自己的家目录下寻找你的密匙,与你发送过来的密匙进行比较,如果相同,服务器就会把自己的“质询”信息进行加密,发送给客户端;客户端接收到“质询”信息之后,就会用自己的私人密匙进行解密,然后把它发送给服务器)。

对于需要经常ssh连接的服务器之间,每次连接都需要输入密码。而有些备份的计划任务需要ssh存储到备份服务器,因此我们需要配置服务器之间使用秘钥验证的方式ssh登录。

当客户端连接远程服务器时,会在客户端当前用户的家目录下生成.ssh/known_hosts文件,把服务器的身份信息保存下来。下一次客户端再连接时,就不再询问是否继续(yes/no)?

使用密钥对方式连接时,客户端生成的密钥是用户家目录下.ssh/id_rsa.ssh/id_rsa.pub,上传时是将id_rsa.pub写入到服务器相关用户家目录下.ssh/authorized_keys文件中

服务端IP192.168.1.113   客户端IP192.168.1.112

修改服务器和客户端ssh配置文件,修改连接端口号,禁用远程root连接,设置最大连接失败次数。

[root@server ~]# vim /etc/ssh/sshd_config 
Port 1022 //修改端口号,修改后客户端登陆ssh  -p 1022 IP地址
PermitRootLogin no  不允许root用户以ssh方式登陆
MaxAuthTries  6 //每次连接允许认证登录的最多次数,若超过此               //次数仍未登录成功,服务器将主动断开连接
重启服务
[root@server ~]# /etc/init.d/sshd restart
停止 sshd :                                   [确定]
正在启动 sshd:                                [确定]

客户端版本为centos7.0

[root@client ~]# vim /etc/ssh/sshd_config 
Port 1022
PermitRootLogin no
MaxAuthTries  6 
[root@client ~]# /bin/systemctl restart sshd.service

服务器和客户端添加用户

[root@server ~]# useradd lucy
[root@server ~]# passwd lucy
更改用户 lucy 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@client ~]# useradd lucy
[root@client ~]# passwd lucy 
更改用户 lucy 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
重新生成ssh文件

重新生成ssh文件

[root@server ~]# rm  -f  /etc/ssh/ssh_host_*
[root@server ~]# service sshd restart
停止 sshd:                                       [失败]
生成 SSH1 RSA 主机键:                           [确定]
生成 SSH2 RSA 主机键:                           [确定]
正在生成 SSH2 DSA 主机键:                       [确定]
正在启动 sshd:                                   [确定]

客户端连接服务器

[root@client ~]# ssh -p 1022 lucy@192.168.1.113
The authenticity of host '[192.168.1.113]:1022 
([192.168.1.113]:1022)' can't be established.
RSA key fingerprint is 
50:f0:09:3c:84:8e:8d:04:fd:c1:90:d7:7d:89:46:47.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.1.113]:1022' (RSA) to the list of known hosts.
lucy@192.168.1.113's password: 
[lucy@server ~]$ exit
logout
Connection to 192.168.1.113 closed.

客户端生成秘钥对

[root@client ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
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:
e6:4c:f1:dc:59:e6:0d:fb:19:a6:f0:e6:50:50:dd:73 root@client
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|             .. .|
|            .  oE|
|        .  .  + o|
|         + ..= + |
|        S o.o.oo.|
|       =    + o.o|
|        o  . + ..|
|            +    |
|             .   |
+-----------------+

加密算法,此处使用的为非对称算法RSA

对称加密:加解密使用相同的密钥。算法:DES / 3DES / AES。优点,加密效率高。缺点,密钥的传输和保管不方便。

非对称加密:公钥加密、私钥解密。算法:RSA。优点,密钥传输保管方便。缺点,加密效率低。

单向加密:加密只能向一个方向进行,不能回推。哈希算法。MD5SHA

上传公钥至服务器

7.0以前的版本ssh-copy-id不支持-p选项,7.0版本更改。7.0以前版本可使用如下命令。也可以直接将~/.ssh/id_rsa.pub文件拷贝至服务器user用户家目录下authorized_keys文件,本次试验中即

/home/lucy/.ssh/authorized_keys

[root@client ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 1022 lucy@192.168.1.113" 
7.0版本可直接使用-p选项。
[root@client ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub -p 1022 lucy@192.168.1.113
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
lucy@192.168.1.113's password: 
 
Number of key(s) added: 1
 
Now try logging into the machine, with:   "ssh -p '1022' 'lucy@192.168.1.113'"
and check to make sure that only the key(s) you wanted were added.

再次ssh服务器时,提示输入密码,此处密码为保护私钥的密码。

[root@client ~]# ssh -p 1022 lucy@192.168.1.113
Agent admitted failure to sign using the key.
lucy@192.168.1.113's password: 
Last login: Wed Jul 16 10:06:48 2014 from 192.168.1.112
[lucy@server ~]$ exit
logout
Connection to 192.168.1.113 closed.

把私钥密码托管给agent,再次连接时就不需要输入密码。

[root@client ~]# ssh-add 
Enter passphrase for /root/.ssh/id_rsa: 
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[root@client ~]# ssh -p 1022 lucy@192.168.1.113
Last login: Wed Jul 16 10:07:24 2014 from 192.168.1.112
[lucy@server ~]$ exit
logout
Connection to 192.168.1.113 closed.