您的位置:首页 > 运维架构 > Linux

Linux远程无密码登陆并远程执行脚本

2015-10-21 23:09 609 查看
假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;

要达到的目的:

A机器ssh登录B机器无需输入密码;

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

ssh-keygen -t rsa #使用rsa加密

二、具体操作流程

单向登陆的操作过程(能满足上边的目的):

1、登录A机器

2、ssh-keygen -t
[rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): [直接回车即可]
Enter passphrase (empty for no passphrase): [若要建立无密码的ssh信任关系,这里直接回车!否则建立信任关系后,每次登陆远程机器均要求输入该密码]
Enter same passphrase again: [直接回车]
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
b4:de:66:2c:c1:04:ad:7c:48:7c:f7:94:71:09:85:21 usr1@localhost


3、在B机创建目录:mkdir /root/.ssh

将 .pub 文件复制到B机器的 .ssh 目录, 并

cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys

或者

cat /root/.ssh/id_rsa.pub | ssh root@192.168.20.60 'cat >> /root/.ssh/authorized_keys'

4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;(直接运行 #ssh 192.168.20.60

双向登陆的操作过程:

1、ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.具体方法如下:

2、两个节点都执行操作:#ssh-keygen -t rsa

然后全部回车,采用默认值.

3、这样生成了一对密钥,存放在用户目录的/root/.ssh下。

将公钥考到对方机器的用户目录下 ,并将其复制到/root/.ssh/authorized_keys中(操作命令:#cat /root/.ssh/id_dsa.pub >> /root/.ssh/authorized_keys )。

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

设置authorized_keys权限

$ chmod 600 authorized_keys

设置.ssh目录权限

$ chmod 700 -R .ssh

5、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。

远程执行脚本示例:

1、在A机创建脚本:

$ vi test.sh

#!/bin/bash
echo "shell start"
ssh root@192.168.20.60 "sh /home/script/hello.sh"


2、在B机创建脚本

$ vi /home/script/hello.sh

#!/bin/bash
echo "hello"


3、在A机运行脚本test.sh

$ sh test.sh

shell start
hello
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: