《LINUX实战:Linux基础教程:配置SSH免密码登陆》要点:
本文介绍了LINUX实战:Linux基础教程:配置SSH免密码登陆,希望对您有用。如果有疑问,可以联系我们。
在应用中我们经常会登陆其他的主机,每次都需要输入用户名和暗码.另外在Hadoop的使用中也会使用ssh命令去连接其它的主机.我们可以设置SSH免暗码登陆来实现其他主机登录该主机是不用输入暗码.
现在我们有两台测试的Linux的虚拟机,我们称之为主机1和主机2.ip分别为192.168.1.101和192.168.1.102,我们这次的目的是用主机主机1的grid用户无暗码连接主机2的grid用户
1. 在主机1天生密钥
先解释一下,三个提醒信息
我们在主机1中创建一个密钥,由于所有设置都是用的默认的,因此直接三个回车
[grid@linuxidc ~]$ ssh-keygen -t rsa
我们可以查看一下当前用户主目次下的.ssh文件夹
[grid@linuxidc ~]$ cd ~/.ssh
[grid@linuxidc .ssh]$ pwd
/home/grid/.ssh
[grid@linuxidc .ssh]$ ll
total 12
-rw-------. 1 grid grid 1675 Jul 22 13:38 id_rsa
-rw-r--r--. 1 grid grid 393 Jul 22 13:38 id_rsa.pub
-rw-r--r--. 1 grid grid 402 Jul 22 12:35 known_hosts
可以发现下面有两个文件:id_rsa
和id_rsa.pub
此中id_rsa.pub是公钥,id_pub是私钥
2. 将主机1公钥分发到主机2下
我们可以直接使用ssh-copy-id 主机名
敕令将公钥拷贝到对方的主机下,例如:
[grid@linuxidc ~]$ ssh-copy-id tiny02
grid@tiny02's password:
Now try logging into the machine, with "ssh 'tiny02'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
实际上ssh-copy-id 命令便是将当前主机id_rsa.pub中的内容,追加到目标主机上的~/.ssh/authorized_keys
文件上,如果该文件不存在,则创建
3. 登录到主机2
我们如今就可以登录主机2了
login as: admin
admin@192.168.132.115's password:
Last login: Tue Mar 7 05:10:19 2017 from 192.168.132.59
[admin@tiny ~]$ ssh 192.168.132.114
Last login: Tue Mar 7 05:13:28 2017 from 192.168.132.115
[admin@tiny ~]$
测试胜利
4.关于SSH连接中流程问题(以下内容纯属于不苟言笑的胡说八道)
前面说到SSH是将公钥发给其余主机,然后其余主机用公钥加密,然后发送回来的吗?所以不应该是将公钥发送给其他主机上,然后其他主机来连接这台主机吗?为什么在这里变为了讲公钥发送给其他主机,然后去连接其它主机,不应该是被连接吗?其实我也不知道,看了SSH协议交互过程这篇博客,我做出了一下猜测:
当我们没有设置SSH免暗码的时候,我们需要输入暗码才能进行远程连接.所以他的连接过程可能是这样子:
而免密码登陆的时候连接过程呢?由于此时服务器已经有了客户端的公钥,可能是这样子的
发现其实二者是一样的只不过就是认证方式不同,一个是password认证,一个是publickey认证,而当服务器将客户端的公钥配到authorized_keys就表示已经同意了对方的免密码连接.需要注意一个问题,password认证所用的密钥和publickey认证所用的密钥是不同的.password认证所用的密钥在/etc/ssh
下,而publickey认证所用的密钥在~/.ssh
下,因此publickey认证所用的公钥在传输过程中是加密的.
而我们换一种情况考虑,就是假设是公钥给谁就是允许谁免暗码连接的情况,会有以下几个问题:
其实我们只要区分免密码和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服务器
开启SSH服务让Android手机远程拜访 Ubuntu 14.04
SSH非交互式暗码授权远程执行脚本
SSH通过密钥登岸
Linux上实现SSH免暗码登陆远程服务器
本文永远更新链接地址:
学习更多LINUX教程,请查看站内专栏,如果有LINUX疑问,可以加QQ交流《LINUX实战:Linux基础教程:配置SSH免密码登陆》。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/9772.html