操作环境: CentOS 6.5
操作对象: 用户A主机和远程主机B
正文部分:斜体加粗代表linux指令。
linux下 非root用户免密码登录远程主机 ssh请转至此链接:XXXXXXXXXXXXXXXX(暂未写好)
一、远程主机B和用户A都安装openssh
首先我们检查远程主机是否安装openshh和rsync
rpm -qa|grep openssh
rpm -qa|grep rsync
如果没有返回相关信息代表并未安装,我们用yum指令安装。
yum install openssh -y
yum install openssh-server -y
yum install openssh-clients -y
yum install rsync -y
(删除openshh和rsync
yum remove openssh -y
yum remove rsync -y)
二、用户A主机生成公钥和私钥。
ssh-keygen -t rsa -P ‘‘(‘‘为默认路径)
出现提示后,回车将公钥和私钥安装在默认路径。/root/.ssh/id_rsa和/root/.ssh/id_rsa.pub
三、远程主机B创建/root/.ssh文件夹。
远程主机存放公钥和私钥的路径在/root/.ssh/authorized_keys这个文件中。
因为远程主机没有经过第二步,所以暂未有/root/.ssh这个文件夹。
通过linux指令创建文件或者在远程主机上也生成公钥和私钥这两个个不同的方法,都可以获得/root/.ssh文件夹。
⑴通过linux指令(这样做需要考虑文件夹的权限,否则用户A主机无法无密码登录远程主机B),
方法如下:
在远程主机B上
⑵执行第二步获得公钥和私钥的同时获得/root/.ssh文件夹(这样做的好处,不用考虑该文件夹的权限),
方法如下:
ssh-keygen -t rsa -P ‘‘(‘‘为默认路径)
出现提示后,回车将公钥和私钥安装在默认路径。/root/.ssh/id_rsa和/root/.ssh/id_rsa.pub
四、把用户A主机的公钥仍到远程主机B上。
通过第三步,我们在远程主机B上获得了/root/.ssh文件夹,现在我们把用户A主机的公钥放在该文件夹下面,然后再追加到/root/.ssh/authorized_keys文件中。
/root/.ssh/authorized_keys文件可以事先没有。
方法如下:
⑴仍公钥:scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh(用户A主机操作)
⑵追加到文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys(远程服务器B主机操作)
⑶修改/etc/ssh/sshd_config中内容:
vi /etc/ssh/sshd_config
(#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
找到上面3条语句,然后把前面的#号拿掉)
注意:有些文章说要把/root/.ssh这个文件夹和/root/.ssh/authorized_keys这个文件,都要修改权限。
但是以我在root下的操作来看,如果把/root/.ssh/authorized_keys文件权限改成600反而会无法使用免密码登录,最好在root下不改权限。
五、用户A主机免密码登录远程服务器B。
ssh 192.168.31.230
即可无密码登录。(退出 exit)
至此我们也完成了Linux下root用户免密码登录远程服务器。