将公钥给目标机器就可以免密登陆目标机器,但是其中也有许多操作细节,下面通过命令来详说。
一、生成公钥私钥
[root@client /]$ ssh-keygen -t rsa
一路默认回车,系统在~/.ssh下生成id_rsa(私钥)、id_rsa.pub(公钥)。注意,这里是root用户,生成的钥匙对在/root/.ssh下,如果是其他用户则是在各自家目录下.ssh目录中。
二、把id_rsa.pub发送到目标机器上
[root@client /]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.20
这里需要注意请保证路径正确,另外此命令是在root用户下执行,所以是和目标机器的root用户进行免密认证(你当前用户执行免密认证,是对目标机器相同的用户进行免密认证),接下来需要输入目标机器的root用户密码。问题来了,如果需要免密认证目标机器的其他用户怎么办,可以用以下命令:
[root@client /]#ssh-copy-id -i ~/.ssh/id_rsa.pub username@192.168.1.20
执行命令输入相应用户的密码之后,
Now try logging into the machine, with "ssh 'hadoop@10.48.115.120'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
出现以上信息就完成了。
三、验证
[root@client /]$ ssh 192.168.1.20
四、备注
第二步操作实际上是将本机的id_rsa.pub复制到目标机器的.ssh目录下的authorized_keys文件中。
第三步ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。