ssh无密码登录需要使用公钥和私钥
例如: 用户从A机器通过终端登录B机器192.168.1.181
1、命令行终端:
1, 生成密钥对
ssh-keygen -t rsa -P ''
-P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P只需要一次回车。
3,设置私钥权限
chmod 600 id_rsa
2, 把A机器下的id_rsa.pub拷贝到B机器的用户目录下
scp .ssh/id_rsa.pub wangwei@192.168.1.181:/home/wangwei/id_rsa.pub
3, 使用密码登录到B机器,并将公钥拷贝到文件~/.ssh/authorzied_keys中
#登录到B机器
ssh wangwei@@192.168.1.181
#输入登录密码
cd ~/.ssh
#导入公钥内容到authorzied_keys
cat id_rsa.pub >> .ssh/authorzied_keys
#设置权限
chmod 600 authorized_keys
authorized_keys的权限必须要是600
此时A机器可以无密码登录B机器了
ssh wangwei@192.168.1.181
2、shell脚本中:
一般情况下,在A机器中的脚本中我门登录到B机器后需要做一系列的操作然后退出返回到A机器进行其它操作时会用到
ssh -i ~/.ssh/id_rsa root@$server <<!
#登录B机器后的操作,此时会阻塞,直到退出B机器后才会进行A机器其它操作
exit
!
#退出后返回A机器后其它操作
常见错误
Permissions 0644 for '/root/.ssh/id_dsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /root/.ssh/id_dsa
Permission denied, please try again.
Permission denied, please try again.
遇到此类错误,一般是由于权限问题。以上错误为私钥权限过大。应该将权限设置为600,chmod 600 id_rsa