ssh 无密码登陆远程服务器
1.在客户端创建公钥
[root@Server1 ~]# ssh-keygen -t rsa
输入后,会提示创建.ssh/id_rsa、id_rsa.pub的文件,其中第一个为密钥,第二个为公钥。过程中会要求输入密码,为了ssh访问过程无须密码,可以直接回车 。
[root@Server1 ~]# ls -l .ssh
总用量 8
-rw-------. 1 root root 1675 12月 10 22:20 id_rsa
-rw-r--r--. 1 root root 394 12月 10 22:20 id_rsa.pub
特别要注意的是这2个文件的权限.
- id_rsa 的权限是 -rw-------
- id_rsa.pub 的权限是 -rw-r--r--
2. 将公钥复制到服务器的 ~/.ssh
目录下
复制客户端 .ssh/id_rsa.pub
文件中的内容,添加到服务器的 ~/.ssh/authorized_keys
文件中, 如果服务器端authorized_keys文件不存在,新建一个即可.
3. 修改服务sshd配置并重启sshd服务
修改服务器端的 /etc/ssh/sshd_config 文件, 打开 AuthorizedKeysFile
使用命令
/etc/init.d/sshd restart
重启 sshd 服务.
4. 设置服务器文件和目录权限:
root:~/.ssh# ll
total 24K
drwx------ 2 root root 4.0K Jan 13 10:42 ./
dr-xr-x--- 15 root root 4.0K Jan 16 00:37 ../
-rw-r--r-- 1 root root 408 Jan 13 10:42 authorized_keys
-rw------- 1 root root 1.7K Aug 13 2015 id_rsa
-rw-r--r-- 1 root root 394 Aug 13 2015 id_rsa.pub
-rw-r--r-- 1 root root 395 Jul 1 2015 known_hosts
特别要注意的一点是 .ssh 目录的权限是 drwx------
5. 客户端验证使用SSH IP地址的方式无密码访问
ssh root@192.168.1.3
如果设置有错误, 则还是会提示输入密码确认. 对于 Centos 可以查看log文件 /var/log/secure
, 寻找原因.
在客户端加 -vvv
可以输出 debug 信息:
ssh -vvv root@192.168.1.3