Chinaunix首页 | 论坛 | 博客
  • 博客访问: 829997
  • 博文数量: 167
  • 博客积分: 7173
  • 博客等级: 少将
  • 技术积分: 1671
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-04 23:07
文章分类

全部博文(167)

文章存档

2018年(1)

2017年(11)

2012年(2)

2011年(27)

2010年(88)

2009年(38)

分类:

2010-07-29 15:36:02

文件:ssh_nopasswd.zip
大小:1KB
下载:下载
SSH无密码登录步骤:生成私钥和公钥;把公钥copy到客户机;对目录的权限进行更改;步骤
有点多,所以,用代码代劳
(
该原理是:

使用一种被称为"公私钥"认证的方式来进行ssh登录. "公私钥"认证方式简单的解释是

  • 首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub 私钥文件:~/.ssh/id_rsa
  • 然后把公钥放到服务器上~/.ssh/authorized_keys, 自己保留好私钥
  • 当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了

 


)

运行格式为:./shellname.sh server/client username


#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin;LANG=zh_CN
export PATH LANG

#默认的用户
SSH_USER=sky


main () {
    if [[ $1 == server ]]
    then
        #建立相应目录
        mkdir -p /home/$SSH_USER/.ssh
        cd /home/$SSH_USER/.ssh
        #生成identify文件
        if [[ ! -f identity || $(fgrep -c "MIICWgIBAAKBgQCmtsxWG1vm51LACDXloJ3FMIm64RBKV/LcIPMI1h" identity) -eq 0 ]]
        then
            echo "\
-----BEGIN RSA PRIVATE KEY-----
MIICWgIBAAKBgQCmtsxWG1vm51LACDXloJ3FMIm64RBKV/LcIPMI1hmLReMQ1MeL
PcwIMWXYIgWQM2CDfV8Dn42Fr4ST7S2OMYmTkdonrPWyGOavTpHLChO5kJxbIEio
Il6yQqeR6MneIfQGvGyyCQX/5YpMx7+C7Sez7c3JNPtqZd/qXOdyfV2gkwIBIwKB
gCrejFCn8w99T8r6zAfY2BzDVp3E2E2hljiawibX9/Cc8T7XoQaMO8eXrHln1Yt6
7O6clMZq2z+iKWfd5ySQZTQo8vAvdw9yN5BrdEemkD0cAMsL0idT3gBDilXH5GP2
LqYrEWn0K9Y3qICloH3GYFPGE9yVi8dUxiQYYWOclITDAkEA0xY37mHFvnfjlt9d
QL5td/TeYMT2j13VG2f2pRplx+6gSxNGCD+92BLZH9z44batLKZaG7Ma00cLrJEi
z1RvDQJBAMovnwX9zLqzKE61VyUkXnLdSq39GKIvv67QTawa1yreNZD5Qbz/VlF2
YurkLyRsMr7aMbdFK/OWUlGGPhQ5Zh8CQQDNDkT2MxfdmQj49j1U1j50h3jwSk6Z
5h95tXNBTNfmyo0VuvOS/BeBcWU05UmKzrba6r3vBcJJlXkOCVUD658TAkAz/Z3r
mQjCS1OB9B25F/sHl/1CrsvR7wVnd2RuFYfJMdNCiTzKMweRSlPzQf1+ZPcbIioK
jiE+ov85iOtkSUYlAkA2nV5Br/6yA/KwuAkWvRU5XWjoe1SZDkQGHGuNMFeFg3cw
9j1yaCmDJVeT6eJ6Q9o1zUO1i1AO3S5W0ksoX/OF
-----END RSA PRIVATE KEY-----\
" >> identity
    #更改相应目录 的权限
            chmod 600 *
            chmod 700 /home/$SSH_USER/.ssh
            chown -R $SSH_USER:$SSH_USER /home/$SSH_USER
        fi
    fi
    if [[ $1 == client ]]
    then
        mkdir -p /home/$SSH_USER/.ssh
        cd /home/$SSH_USER/.ssh
        if [[ ! -f authorized_keys || $(fgrep -c "AAAAB3NzaC1yc2EAAAABIwAAAIEAprbMVhtb5udSwAg15aCdxTCJuuEQSlfy3CDzCNYZi0" authorized_keys) -eq 0 ]]
        then
            echo "\
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAprbMVhtb5udSwAg15aCdxTCJuuEQSlfy3CDzCNYZi0XjENTHiz3MCDFl2CIFkDNgg31fA5+Nha+Ek+0tjjGJk5HaJ6z1shjmr06RywoTuZCcWyBIqCJeskKnkejJ3iH0BrxssgkF/+WKTMe/gu0ns+3NyTT7amXf6lzncn1doJM= rsync@kidspub\
" >> authorized_keys
            chmod 600 *
            chmod 700 /home/$SSH_USER/.ssh
            chown -R $SSH_USER:$SSH_USER /home/$SSH_USER
        fi
        if [[ $(grep -c "\<$SERVER\>" /etc/hosts.allow) -eq 0 ]]
        then
            sed -i "s/sshd2:/sshd2:$SERVER,/" /etc/hosts.allow
        fi
    fi
}

if [[ "$1" != client && "$1" != server ]]
then
        echo "$0 [server|client]"
        exit
fi

if [[ $# -eq 2 ]]
then
    SSH_USER=$2
fi

if [[ $(grep -c "^$SSH_USER:" /etc/passwd) -eq 0 ]]
then
    useradd $SSH_USER
fi

ssh_version=$(ssh -V 2>&1)
ssh_version=${ssh_version:0:7}
if [[ $ssh_version == OpenSSH ]]
then
    main $1
fi

阅读(1678) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~