ssh 密钥登录
方法一:
使用下例中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用户登录,不会提示密码,就直接登录进去了。