Logowanie via SSH bez hasła
Nie, to nie będzie wpis informujący o tym, że logując się przez SSH nie trzeba za każdym razem wklepywać hasła.
Mam kilka kont z dostępem do shella, a wykonywanie rutynowych czynności umożliwiających bezhasłowe logowanie (jak to zwykle z rutyną bywa) zaczęło mnie nudzić. Napisałem prosty skrypt, który na kształt kreatora wyda wszystkie niezbędne plecenia.
HOWTO
Zakładam, że masz juz swój klucz publiczny. Jeśli nie – stwórz go, wydając w konsoli polecenie
ssh-keygen -t rsa
Generator zapyta o nazwe pliku i hasła. Możesz na wszystkie pytania odpowiedzieć Enterem, pozostawiając domyślne ustawienia.
Skrypt możesz zapisać na dysku kopiując jego treść z poniższej ramki. Dla wygody umieściłem go jednak na serwerze. Teraz wystarczy wpisać:
wget http://projects.ludwikc.net/passwordless_ssh chmod +x passwordless_ssh ./passwordless_ssh
Po kolei:
- nazwa użytkownika konta ssh
- adres hosta
- port serwera (dafault’owo 22)
- hasło (2x)
Od tego momentu wystarczy wpisac w konsoli
./yourhostname.com
żeby połączyć się z serwerem bez podawania hasła (oczywiście ssh user@host też będzie działać bez zarzutu!)
Enjoy
Treść dla zainteresowanych:
#!/bin/sh
cd $HOME
echo "Passwordless ssh (v. 0.6)"
echo "Enter your ssh username:"
read user
echo "Host (or ip):"
read host
# Ports added in 0.4
echo "Enter ssh port: (press Enter if you don't know)"
read port
if port=NULL
then port=22
fi
echo "Wait for connection and type password for given username"
scp -P $port $HOME/.ssh/id_rsa.pub $user@$host:~/id_rsa-passwordless.pub
echo "Success: RSA key exported."
echo "Last with-password ssh login..."
ssh $user@$host -p $port "if [ -d $dotssh ]
then
echo "Success: Directory $HOME/.ssh/ exists."
else
echo -e "There is no $HOME/.ssh/ directory." && mkdir $HOME/.ssh && echo "Success: Directory $HOME/.ssh has been created"
fi &&
cat ~/id_rsa-passwordless.pub >> .ssh/authorized_keys && rm id_rsa-passwordless.pub && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys && exit"
echo "Authorization successful!"
# Added in 0.3 version - symlinks providing easier login
echo ""
if [ -d $HOME/.ssh/passwordless_login ]
then
echo "Directory $HOME/.ssh/passwordless_login has been created during last passwordless_ssh usage."
else
mkdir $HOME/.ssh/passwordless_login
fi
echo ssh $user@$host -p $port >> ~/.ssh/passwordless_login/$host
chmod +x ~/.ssh/passwordless_login/$host
ln -s ~/.ssh/passwordless_login/$host $host
echo "From now-on simply type ./$host, to log-in without password."
echo "Passwordless ssh by Ludwik C. Siadlak (http://ludwikc.net). GPL Licence. Have a nice day!"
UPDATE: v. 0.4 – Możliwość wyboru portu innego niż 22.
UPDATE: v. 0.5 – Powłoka zmieniona na /bin/sh dla kompatybilności z systemami *BSD.
UPDATE: v. 0.6 – Sprawdzanie katalogów (dzięki Jojo!) i domślny port połączenia. (Wersja passwordless_ssh-pl została zastąpiona oryginalną passwordless_ssh)
[tags]linux, bash[/tags]


