手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux shell脚本实现SSH免密码登陆

[日期:2014-12-31] 来源:Linux社区  作者:pqj8844 [字体: ]

最近工作是主要在写shell脚本,这中间有个功能就是要实现机器之间的SSH免密码登陆,在此我把我成功执行的步骤记下来。

1、首先生成本地的 authorized_keys(我这个是root用户)

ssh-keygen -q -t rsa -N "" -f /root/.ssh/id_rsa

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

chmod go-rwx /root/.ssh/authorized_keys

2、需要安装expect,安装expect的时候,如果你的linux可以联网,那直接yum就搞定了。

如果你的机房像我一样,没有外网,并且你找那些安装包,和依赖包又不会,或者不方便的情况下,可以按照下面我的经验做。

(1)用你自己的机器,前提你自己的机器可以联网。下载一个yum插件:yum-downloadonly :yum -y install yum-downloadonly

(2)然后 yum -y install --downloadonly --downloaddir=/root/ expect  (--downloadonly 就是只下载不安装,--downloaddir就是下载到哪里,自行修改),然后在/root/ 下可以看到你下好的expect包和依赖包。

(3)你把下载好的文件,拷贝到服务器上就可以安装了。

3、脚本

#!/bin/sh

#pqj,2014-11-12,SSH免密码登录

#$1:远程机器密码

#$2:远程机器IP

auto_ssh_copy_id () {

    expect -c "set timeout -1;
                spawn ssh-copy-id $2;
                expect {
                    *(yes/no)* {send -- yes\r;exp_continue;}
                    *assword:* {send -- $1\r;exp_continue;}
                    eof        {exit 0;}
                }";

auto_ssh_copy_id  yourpassword yourIP

Shell编程浅析 http://www.linuxidc.com/Linux/2014-08/105379.htm 

Linux Shell参数替换 http://www.linuxidc.com/Linux/2013-06/85356.htm

Shell for参数 http://www.linuxidc.com/Linux/2013-07/87335.htm

Linux/Unix Shell 参数传递到SQL脚本 http://www.linuxidc.com/Linux/2013-03/80568.htm

Shell脚本中参数传递方法介绍 http://www.linuxidc.com/Linux/2012-08/69155.htm

Shell脚本传递命令行参数 http://www.linuxidc.com/Linux/2012-01/52192.htm

Linux Shell 通配符、转义字符、元字符、特殊字符 http://www.linuxidc.com/Linux/2014-10/108111.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-12/111075.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款