Sistem masuk tunggal SSH biasanya dicapai dengan otentikasi kunci publik dan agen otentikasi. Anda dapat dengan mudah menambahkan kunci VM pengujian Anda ke agen auth yang ada (lihat contoh di bawah). Metode lain seperti gssapi / kerberos ada tetapi lebih kompleks.
sshpass
Dalam situasi di mana password
hanya metode otentikasi yang tersedia, sshpass dapat digunakan untuk memasukkan kata sandi secara otomatis. Harap perhatikan bagian PERTIMBANGAN KEAMANAN di halaman manual . Dalam ketiga opsi, kata sandi terlihat atau disimpan dalam plaintext di beberapa titik :
Pipa anonim (direkomendasikan oleh sshpass)
# Create a pipe
PIPE=$(mktemp -u)
mkfifo -m 600 $PIPE
# Attach it to file descriptior 3
exec 3<>$PIPE
# Delete the directory entry
rm $PIPE
# Write your password in the pipe
echo 'my_secret_password' >&3
# Connect with sshpass -d
sshpass -d3 ssh user@host
# Close the pipe when done
exec 3>&-
Ini cukup rumit di bash, bisa dibilang lebih mudah dengan bahasa pemrograman. Proses lain dapat dilampirkan ke pipa Anda / fd sebelum kata sandi ditulis. Jendela peluang cukup pendek dan terbatas pada proses atau root Anda.
Variabel lingkungan
# Set your password in an environment variable
export SSHPASS='my_secret_password'
# Connect with sshpass -e
sshpass -e ssh user@host
Anda dan root dapat membaca variabel lingkungan proses Anda (yaitu kata sandi Anda) ketika sshpass sedang berjalan ( cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). Jendela peluang jauh lebih lama tetapi masih terbatas pada proses atau root Anda sendiri, bukan pengguna lain.
Argumen baris perintah (paling tidak aman)
sshpass -p my_secret_password ssh user@host
Ini nyaman tetapi kurang aman seperti yang dijelaskan dalam halaman manual. Argumen baris perintah terlihat oleh semua pengguna (misalnya ps -ef | grep sshpass
). sshpass mencoba menyembunyikan argumen, tetapi masih ada jendela di mana semua pengguna dapat melihat kata sandi Anda dilewati oleh argumen.
Catatan samping
Setel variabel HISTCONTROL bash Anda ke ignorespace
atau ignoreboth
dan awali perintah sensitif Anda dengan spasi. Mereka tidak akan disimpan dalam sejarah.
Otentikasi kunci publik SSH
# Generate a key pair
# Do NOT leave the passphrase empty
ssh-keygen
# Copy it to the remote host (added to .ssh/authorized_keys)
ssh-copy-id user@host
Frasa sandi sangat penting. Siapa pun yang mendapatkan file kunci privat tidak akan dapat menggunakannya tanpa frasa sandi.
Atur agen otentikasi SSH
# Start the agent
eval `ssh-agent`
# Add the identity (private key) to the agent
ssh-add /path/to/private-key
# Enter key passphrase (one time only, while the agent is running)
Terhubung seperti biasa
ssh user@host
Keuntungannya adalah kunci pribadi Anda dienkripsi dan Anda hanya perlu memasukkan frasa sandi satu kali (melalui metode input yang lebih aman juga).