Easy passwordless SSH using ssh-keyput

Assalamualaikum wr. wb.,

Hi All.

Pada sore hari ini sambil saya menunggu kelas bahasa inggris saya di sebuah pusat perbelanjaan di daerah Jakarta Pusat tempat biasa para “Wota JKT48” berkumpul, daripada menganggur saya akan menulis tutorial setup passwordless SSH. Namun pada bagian ini saya akan menggunakan cara yang berbeda dengan tutorial saya yang sebelumnya. Pada tulisan saya sebelumnya menggunakan cara manual mengunggah private key kedalam server, maka pada bagian kali ini saya melakukan instalasi dengan cara otomatis hanya bermodal password yang sudah ada. Tutorial kali ini saya menggunkan ssh-keyput script untuk melakukan unggah data kedalam server.

Kalau pada tutorial sebelumnya kita harus melakukan generalisasi private key kemudian mengunggah kedalam mesin yang akan kita targetkan untuk passwordless maka pada bagian ini kita hanya perlu menjalankan ssh-keyput dengan tambahan opsi target dari server yang akan kalian gunakan. Untuk menggunakan SSH-keyput kita bisa menggunakan perintah

./ssh-keyput username@IP-server

setelah kita menjalankan perintah ini maka script ssh-keyput akan membantu kita untuk generate private key dan sekaligus membantu kita untuk mengunggah private key yang ssh-keyput generate kedalam server kita. Dengan adanya script ini saya merasa sangat terbantu dalam bekerja karena ketika kita melakukan migrasi server terutama jika kita mass migration server, bakalan males dah masuk ke server ketik username 1 per 1.

Okk, jika server kita menggunakan port non default yaitu port 22, maka kita perlu merubah script ssh-keyput yang sudah ada untuk bisa menggunakan port selain 22. Semisal kita menggunakan port 2002 untuk server kita maka anda perlu merubah script menjadi

ssh -oStrictHostKeyChecking=no $IP -p2002 “mkdir -p ~/.ssh; chmod 700 ~/.ssh; \

dan

-oStrictHostKeyChecking=no $IP -p2002 /bin/true

and that’s it.

Sekian saja tulisan saya hari ini. Ternyata menulis begini cukup membunuh waktu secara produktif selama 30 menit. See you in my next tutorial. Maybe I will write about hardening server later.

Wassalamualaikum n pareng~

INSTALL :

sudo gem install csexton-ssh-keyput -s http://gems.github.com

USAGE :

ssh-keyput user@example.com

 

Source : https://github.com/csexton/ssh-keyput

#!/bin/bash
#
# ssh-keyput — set up passwordless openssh login.
#
# Copyright (C) 2001, 2002, 2006 by SWsoft.
# Author: Kir Kolyshkin
#
# This script is used to put your public ssh keys to another host’s
# authorized_keys[2], so you will be able to ssh login without entering
# a password. Key pairs are generated if needed, and connectivity
# is checked after putting the keys.

PROGNAME=`basename $0`

function usage()
{
echo “Usage: $PROGNAME [user@]IP [[user@]IP …]” 1>&2
exit 0
}

# Check for correct number of parameters
test $# -gt 0 || usage;

SSH_KEYGEN=`which ssh-keygen`
if test $? -ne 0; then
# Error message is printed by ‘which’
exit 1
fi

SSH_DIR=~/.ssh
if ! test -d $SSH_DIR; then
mkdir $SSH_DIR
fi
chmod 700 $SSH_DIR

if [ ! -f $SSH_DIR/identity ] || [ ! -f $SSH_DIR/identity.pub ]; then
echo “Generating ssh1 RSA keys – please wait…”
rm -f $SSH_DIR/identity $SSH_DIR/identity.pub
$SSH_KEYGEN -t rsa1 -f $SSH_DIR/identity -P ”
if [ $? -ne 0 ]; then
echo “Command \”$SSH_KEYGEN -t rsa1 -f $SSH_DIR/identity” \
“-P ”\” failed” 1>&2
exit 1
fi
else
echo “ssh1 RSA key is present”
fi

if [ ! -f $SSH_DIR/id_dsa ] || [ ! -f $SSH_DIR/id_dsa.pub ]; then
echo “Generating ssh2 DSA keys – please wait…”
rm -f $SSH_DIR/id_dsa $SSH_DIR/id_dsa.pub
$SSH_KEYGEN -t dsa -f $SSH_DIR/id_dsa -P ”
if test $? -ne 0; then
echo “Command \”$SSH_KEYGEN -t dsa -f $SSH_DIR/id_dsa” \
“-P ”\” failed” 1>&2
exit 1
fi
else
echo “ssh2 DSA key is present”
fi

SSH1_RSA_KEY=`cat $SSH_DIR/identity.pub`
SSH2_DSA_KEY=`cat $SSH_DIR/id_dsa.pub`

for IP in $*; do
echo “You will now be asked for password for $IP”
#    set -x
ssh -oStrictHostKeyChecking=no $IP -p2002 “mkdir -p ~/.ssh; chmod 700 ~/.ssh; \
echo \”$SSH1_RSA_KEY\” >> ~/.ssh/authorized_keys; \
echo \”$SSH2_DSA_KEY\” >> ~/.ssh/authorized_keys2; \
chmod 600 ~/.ssh/authorized_keys ~/.ssh/authorized_keys2″
#    set +x
if test $? -eq 0; then
echo “Keys were put successfully”
else
echo “Error putting keys to $IP” 1>&2
fi
done

for IP in $*; do
for ver in 1 2; do
echo -n “Checking $IP connectivity by ssh$ver… ”
ssh -q -oProtocol=${ver} -oBatchMode=yes \
-oStrictHostKeyChecking=no $IP -p2002 /bin/true
if [ $? -eq 0 ]; then
echo “OK”
else
echo “failed” 1>&2
fi
done
done

 

Source : https://openvz.org/Ssh_keys

nash-notesPracticeJanuary 28, 20160 comments0 linux, passwordless, ssh passwordless.

Hey, like this post? Why not share it with a buddy?

Leave a Comment

Your email address will not be published. Required fields are marked *