SUSE LINUX Enterprise & openSUSE Community
มกราคม 18, 2019, 11:28:38 PM *
ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
ข่าว:
 
   หน้าแรก   ช่วยเหลือ ค้นหา เข้าสู่ระบบ สมัครสมาชิก  

[Why we need your support] SUSE and openSUSE are trademarks of Attachmate Group, Inc. - WE ARE NOT IN ANY WAY ASSOCIATED WITH SUSE AND ATTACHMATE GROUP. SUSEThailand.com is a SUSE Linux user and community found in Thailand but not limited to other country suse linux user to join in. Currently active contents (How to's, Scripts, Tips, Tricks, Tutorials, Linux Command Line, and Troubleshooting) this suse linux how to's and expert support are SUSE Linux.
หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน
หัวข้อ: ssh-keygen: password-less SSH login script  (อ่าน 3665 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Sontaya
Administrator
Expert : ผู้เชี่ยวชาญ
*****

Karma: +1/-0
ออฟไลน์ ออฟไลน์

กระทู้: 1931


Administrator


เว็บไซต์
« เมื่อ: เมษายน 19, 2011, 02:23:43 PM »


ssh-keygen: password-less SSH login script

license: GPLv2

ยูทิลิตี้นี้จะใช้ ssh-keygen และ ssh_copy_id เพื่อสร้าง RSA Private คีย์ / Public คีย์ โดยจะใช้โปรโตคอล SSH เวอร์ชัน 1 ใช้สำหรับ RSA keys ส่วนโปรโตคอล SSH เวอร์ชัน 2 สำหรับ DSA keys

เมื่อเรารันสคริปต์ สคริปต์จะทำการคัดลอกคีย์ไปยังเครื่องปลายทาง เมื่อเรารีโมทไปยังเครื่องปลายทาง
ก็ยังไม่ขึ้นใส่ใส่รหัสผ่านครับ

กรณีที่ปลายทางมีไฟล์ /root/.ssh/authorized_keys อยู่แล้ว สคริปต์จะคัดลอกคีย์เพิ่มเข้าไปในไฟล์อัตโนมัติ
โดยไม่แทนที่คีย์ที่เคยมีอยู่แล้ว

การติดตั้ง

1. สคริปต์

โค๊ด:
#!/bin/bash

##############################################################################
#  trusted-key-exchange.sh - his utility uses ssh-keygen and ssh_copy_id to create create shared keys.
#  Copyright (C) 2001, 2011 Novell, Inc.
#
##############################################################################
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; version 2 of the License.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#  Authors/Contributors:
#     Jeremy Meldrum (jmeldrum@novell.com)
#
##############################################################################

desDNS=""
parm="none"
##############################################################################
checkUser ()
{
#Checks to see if the user is root before proceeding
user=`whoami`
if [ $user != "root" ]; then
printf "\nYou are currently not logged in as a root user.  Please \"su\" to root before continuing.\n\n "
exit 3
fi
}
##############################################################################
createTrustedKey ()
{
if [ -n $desDNS ]; then
#This will create the source and destination server trusted clients
printf "\nssh key pairs being created.......................\n"
printf "Press \"\033[32mENTER\033[0m\" on the next question and accept the defaults.\n"
ssh-keygen -N '' -t dsa
#copies the public key toe the destination server.
echo -e "\nExecuting ssh for key generation."
echo -e "\nPlease enter the password for root on the other/destination server."
ssh-copy-id -i /root/.ssh/id_dsa.pub root@$desDNS >/dev/null

########Put your multiple copy stuff here if youw want to.#####
#Example:
#echo "Copying Messages file to other server"
#scp /var/log/messages root@$desDNS:/tmp/
###############################################################
else
echo "A DNS name or IP address was not specified"
echo -en "Would you like to quit (\033[32mY\033[0m)es|(\033[32mN\033[0m)o?"
read answer
    case "$answer" in
Y*|y*)
exit 3;
;;
N*|n*)
createTrustedKey
;;
*)
echo "No answer was specified...quiting"
exit 3
;;
esac
fi
}
##############################################################################
deleteTrustedKey ()
{
#if [ -n $desDNS ]; then
#these commands will remove the trusted keys from both the local and destination servers.
printf "ssh Key pairs being deleted.......................\n"
ssh root@$desDNS 'rm ~/.ssh/authorized_keys'
rm ~/.ssh/id_dsa*
}
##############################################################################
getInfo ()
{
clear
title
echo "This utility uses ssh-keygen and ssh_copy_id to create create RSA keys for use by SSH protocol version 1 and RSA or DSA keys for use by SSH protocol version 2. This key is then copied securely to the destination server."
        echo "If the file /etc/root/.ssh/authorized_keys exists on the destination server, you probably already have it already setup"
        echo "For more information see the man pages for ssh-keygen and ssh_copy_id"
echo ""
        echo -n "What is the DNS name or IP address of the server you want to share/delete keys with? "
#This will turn the answer to desDNS to green then back to normal.
echo -en "\033[32m"
        read desDNS
echo -en "\033[0m"
}
##############################################################################
execCalls ()
{
        if [ $parm == "delete" ] || [ $parm == "create" ]; then
               getInfo
        fi
        if [ $parm == "create" ]; then
               createTrustedKey
        fi
        if [ $parm == "delete" ]; then
               deleteTrustedKey
        fi
}
##############################################################################
title ()
{
                echo '#=======================================================#'
                echo '#                 Trusted Key Exchange                  #'
                echo '#             Version 1.0 April 14, 2011                #'
                echo '#=======================================================#'
}

##############################################################################
checkUser

err=1
while getopts cdh parmlist
do
case "$parmlist" in
d)          
                parm="delete"  
err=0
;;
c)          
                parm="create"
err=0
;;
h)
err=0
clear
title
                printf "\n\n"
                echo 'USAGE: ./trusted-key-exchange-1.0.sh '
                printf "\n"
                echo 'ARGUMENTS:'
                printf "\n"
                echo '  -c      Used to create trusted keys'
                echo '  -d      Used to delete trusted keys'                
                echo '  -h      Displays the Help Menu'
                printf "\n"
                echo 'ABOUT:'
       echo "This utility uses ssh-keygen and ssh_copy_id to create create RSA keys for use by SSH protocol version 1 and RSA or DSA keys for use by SSH protocol version 2. This key is then copied securely to the destination server."
       echo "If the file /etc/root/.ssh/authorized_keys exists on the destination server, you probably already have it already setup"
       echo "For more information see the man pages for ssh-keygen and ssh_copy_id"

                printf "\n"
;;
*)
err=0
printf "\nInvalid parameter specified.  Please run the command again with a -h for more help.\n\n"
;;
esac
done

if [ $err == "1" ]; then
printf "\nNo parameter specified.  Please run the command again with a -h for more help.\n\n"
fi
execCalls


หรือ ดาวน์โหลดสคริปต์
โค๊ด:
http://www.novell.com/communities/files/trusted-key-exchange-1.0.tgz

2. เปิดโปรแกรม Terminal จากนั้นพิมพ์ "su"

3. ใส่รหัสผ่าน "root"

4. แตกไฟล์สคริปต์ที่ดาวน์โหลดมา
โค๊ด:
tar tar zxvf trusted-key-exchange-1.0.tgz  

5. เซต permission ไฟล์

โค๊ด:
chmod 755 trusted-key-exchange-1.0.sh

6. รันสคริปต์

โค๊ด:
./trusted-key-exchange-1.0..sh -c

ถ้าถูกต้องเมื่อเรา ssh ไปเครื่องปลายทาง จะไม่ขึ้นถามรหัสผ่าน

Troubleshooting:
Error: Agent admitted failure to sign using the key.
solved:
โค๊ด:
ssh-add


Refference - http://www.novell.com/communities/node/12811/ssh-keygen-password-less-ssh-login-script
« แก้ไขครั้งสุดท้าย: กรกฎาคม 05, 2011, 10:45:42 PM โดย Sontaya » แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า

ageLOC Technology
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

(@)2007 SUSE Linux user community found in Thailand. This site is not an official openSUSE and SUSE website, and is not in any way affiliated with or endorsed by SUSE Linux GmbH or Novell. openSUSE and SUSE are trademarks of Novell, Inc. in the United States and other countries.
Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!
หน้านี้ถูกสร้างขึ้นภายในเวลา 0.034 วินาที กับ 20 คำสั่ง (Pretty URLs adds 0.008s, 2q)