ssh无密码访问

一、单向SSH无密码访问 

   ssh 专为远程登录会话和其他网络服务提供安全性的协议。默认状态下ssh链接是需要密码认证的,可以通过添加系统认证(即公钥-私钥)的修改,修改后系统间切换可以避免密码输入和ssh认证。以下将创建过程简单介绍下。

ssh配置  

主机A:10.0.5.199

主机B:10.0.5.198 

需要配置主机A无密码登录主机A(drbd),主机B(nagios)     #先确保所有主机的防火墙处于关闭状态。

一、用ssh-keygen创建公钥

1、切入~/.ssh目录

[root@drbd ~]# pwd

/root

[root@drbd ~]# cd .ssh/

2、创建公钥

[root@drbd .ssh]# ssh-keygen -t rsa -P ''

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

/root/.ssh/id_rsa already exists.

Overwrite (y/n)? y

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:

f6:09:12:a8:55:51:b4:23:2c:2b:6f:c6:e3:52:4d:98 

-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三次回车,用-P就一次回车。由于我之前设置过ssh无密码访问,所有才会有提示覆盖。

3、查看创建的公钥

[root@drbd .ssh]# ls

id_rsa  id_rsa.pub  known_hosts

.ssh下有id_rsa和id_rsa.pub,其中第一个为密钥,第二个为公钥。

4、将公钥复制到被管理机器上面(A和B)

[root@drbd .ssh]# cp id_rsa.pub authorized_keys    #复制到A ,这步完成后就可以无密码ssh本机了

[root@drbd .ssh]# scp id_rsa.pub [email protected]:~/.ssh/authorized_keys  #复制到B

[email protected]'s password: 

由于还没有免密码登录的,所以要输入密码,进入主机B的.ssh目录,改变authorized_keys文件的许可权限。

[root@drbd .ssh]# chmod 600 authorized_keys

以上完成后A(drbd)就就可以无密码ssh访问本身和B(nagios)了!

二、多台机器无密码访问

1、在每台服务器上都执行ssh-keygen -t rsa生成密钥对:
#ssh-keygen -t rsa

2、在每台服务器上生成密钥对后,将公钥复制到需要无密码登陆的服务器上:
举例如192.168.15.240,192.168.15.241,192.168.15.242这三台服务器需要做相互免密码登陆,在每台服务器生成密钥对后,在每台服务器上执行ssh-copy-id命令(具体说明及用法见最后附录),将公钥复制到其它两台服务器上(此处以192.168.15.240为例,用户为root,其它两台步骤相同)
#ssh-copy-id -i  ~/.ssh/id_rsa.pub 
[email protected]
#ssh-copy-id -i  ~/.ssh/id_rsa.pub [email protected]
以上命令,可以自动将公钥添加到名为authorized_keys的文件中,在每台服务器都执行完以上步骤后就可以实现多台服务器相互无密码登陆了
附ssh-copy-id介绍及用法:

Linux系统里缺省都包含一个名为ssh-copy-id的工具:

# type ssh-copy-id
ssh-copy-id is /usr/bin/ssh-copy-id

你用cat或者more命令看一下就知道ssh-copy-id本身其实就是一个shell脚本,用法很简单:

# ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

ssh-copy-id有一个很要命的问题,那就是缺省它仅仅支持SSH运行在22端口的情况,不过实际上出于安全的需要,我们往往都会更改服务器的SSH端口,比如说改成10022端口,这时候你运行ssh-copy-id就会报错了。

解决办法由两种:

1、直接修改ssh-copy-id脚本

# vi ~/.ssh/config

加上内容:

Host server
Hostname ip
Port 10022

你也可以单独只加入Port一行配置,那样就是一个全局配置,保存后再运行ssh-copy-id命令就不会报错了。

2、如果端口不是22,不修改config文件,按如下方式也可以:

ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 10022 user@server


参考链接:http://blog.csdn.net/an342647823/article/details/7245471

你可能感兴趣的:(ssh,无密码访问)