那么我们加一个认证啊,因为password认证不能用,而publickey认证也不能用,因此我们需要创建一个认证方式,例如:我们在客户端请求免密码的时候,设置一个随机的字符串,发送给客户端,然后客户端通过这串字符串当做认证条件呢。恩,可以。如果这样子,我们都不许配置免密码了,直接写一个脚本,把服务器对应用户名和密码放进去就好了,也能实现这个效果。
其实我们只要区分免密码和SSH加密不同就可以了:
SSH加密本质是保持通讯过程的安全,他主要目的在通讯安全上,至于你们通讯过程,例如是否认证,服务器是否允许客户端的访问不是他需要关心的问题。
免密码目的是免除认证,SSH加密只是他防止认证过程中认证信息被监听的一种手段,也不是他的目的。
因此虽然可能有许多种免密码的方式,但是我们只要找出来一种最为安全、高效的就可以了。没有必要纠结于为什么不怎么怎么做。
需要注意的问题:
1. 关于自己主机登陆自己的主机也需要密码?
我们可以测试一下这个问题:
[root@linuxidc ~]
# ifconfig
eth0
Link encap:Ethernet HWaddr
00:
0C:
29:
49:E9:
9D
inet addr:
192.168.132.113 Bcast:
192.168.132.255 Mask:
255.255.255.0
inet6 addr: fe80::
20c:
29ff:fe49:e99d/
64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:
1500 Metric:
1
RX packets:
2648 errors:
0 dropped:
0 overruns:
0 frame:
0
TX packets:
1725 errors:
0 dropped:
0 overruns:
0 carrier:
0
collisions:
0 txqueuelen:
1000
RX bytes:
250583 (
244.7 KiB) TX bytes:
187492 (
183.0 KiB)
Interrupt:
19 Base address:
0x2024
lo
Link encap:Local Loopback
inet addr:
127.0.0.1 Mask:
255.0.0.0
inet6 addr: ::
1/
128 Scope:Host
UP LOOPBACK RUNNING MTU:
16436 Metric:
1
RX packets:
10 errors:
0 dropped:
0 overruns:
0 frame:
0
TX packets:
10 errors:
0 dropped:
0 overruns:
0 carrier:
0
collisions:
0 txqueuelen:
0
RX bytes:
840 (
840.0 b) TX bytes:
840 (
840.0 b)
[root@linuxidc ~]
# ssh 192.168.132.113
The authenticity
of host
'192.168.132.113 (192.168.132.113)' can't be established.
RSA
key fingerprint
is 67:
91:
3a:e4:
97:af:
9d:
01:
37:
5f:
4a:ed:
14:dc:
04:
46.
Are you sure you want
to continue connecting (yes/no)? yes
Warning: Permanently added
'192.168.132.113' (RSA) to the list of known hosts.
root@
192.168.132.113's password:
Last login: Tue Mar
7 12:
09:
45 2017 from 192.168.132.59
所以在我们设置免密码登陆的时候我们也需要对自己的主机进行设置
2. root用户之间为什么设置却不可以
root用户默认设置是不可以使用ssh免密码登陆的,但是可以修改相关配置,使其能够使用ssh免密码登陆,但是在此不做介绍。
下面关于SSH相关的文章您也可能喜欢,不妨参考下:
Ubuntu 下配置 SSH服务全过程及问题解决
Ubuntu 14.04 下安装Samba 及SSH 服务端的方法
集群环境SSH免密码登录设置
提高Ubuntu的SSH登陆认证速度的办法
远程SSH连接服务与基本排错
使用SSH公钥密钥自动登陆Linux服务器