我们经常会遇到这样的场景。在服务器A写好了脚本中会需要远程执行服务器B上脚本,而进一步做到自动化就需要省去从服务器A登录到服务器B(ssh远程登录)输入密码的环节。当然,这里从A到B指定使用B服务器上的账号:niuge
这里我们围绕常用的配置密钥对来解决吧。
1、服务器A上生成密钥对(公钥-私钥)
[duke@dukeServer ~]$ ssh-keygen -t rsa
2、将公钥传给服务器B
方法1:手动完成
编辑服务器A公钥文件,拷贝其内容;
在服务器B创建如下目录:
/home/niuge/.ssh #权限是755或700(对group和other不给写权限即可)
在该目录创建如下文件并将服务器A的公钥文件内容写入:
/home/niuge/.ssh/authorized_keys #权限是600或644(对group和other不给执行和写权限即可)
方法2:自动完成
以下三种方式均可:
[duke@dukeServer ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub -p 1822 niuge@192.168.56.18
[duke@dukeServer ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 1822 niuge@192.168.56.18'
[duke@dukeServer ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 1822 niuge@192.168.56.18"
上述两种方法均需要保证文件和目录的权限不要有差异,否则登录的时候还是会需要输入密码。