方法一:

使用下例中ssky-keygen和ssh-copy-id,仅需通过3个步骤的简单设置而无需输入密码就能登录远程Linux主机。 
ssh-keygen 创建公钥和密钥。 
ssh-copy-id 把本地主机的公钥复制到远程主机的authorized_keys文件上。
ssh-copy-id 也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限 。

加密方式选 rsa|dsa均可以,默认dsa


步骤1: 用 ssh-key-gen 在本地主机上创建公钥和密钥

 ssh-keygen -t  rsa

步骤2: 用 ssh-copy-id 把公钥复制到远程主机上

 ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.103.117

[注: ssh-copy-id 把密钥追加到远程主机的 .ssh/authorized_key 上.]

步骤3: 直接登录远程主机

ssh 192.168.103.117

[注: SSH 不会询问密码.] 

4、设置文件和目录权限:

设置authorized_keys权限
$ chmod 600 authorized_keys 
设置.ssh目录权限
$ chmod 700 -R .ssh


注意:如果是通过其他的工具生成的公钥和私钥的话,则只需要吧公钥上传到服务器,~/.ssh/authorized_keys,,并更改目录和文件的相应权限,

chmod 700  -R .ssh

chmod 600 -R authorized_keys



总结注意事项

1、文件和目录的权限千万别设置成chmod 777.这个权限太大了,不安全,数字签名也不支持。我开始图省事就这么干了

2、生成的rsa/dsa签名的公钥是给对方机器使用的。这个公钥内容还要拷贝到authorized_keys

3、linux之间的访问直接 ssh 机器ip

4、某个机器生成自己的RSA或者DSA的数字签名,将公钥给目标机器,然后目标机器接收后设定相关权限(公钥和authorized_keys权限),这个目标机就能被生成数字签名的机器无密码访问了


实现无密码登录

通过上面可以实现无密码登录,但使用的是密钥登录的,下面介绍如何使用ssh不需要密码,进行登录系统的。

vim  /etc/ssh/sshd_config

改这一行,去掉#号,并把no改成yes

PermitEmptyPasswords yes


vim  /etc/shadow

把中间的密码删掉

bob::17130:0:99999:7:::

最后重启sshd服务

service sshd restart


最后使用bob用户登录,不会提示密码,就直接登录进去了。