การลงชื่อเข้าใช้ครั้งเดียวของ SSH สามารถทำได้ด้วยการตรวจสอบกุญแจสาธารณะและตัวแทนการตรวจสอบความถูกต้อง คุณสามารถเพิ่มคีย์ทดสอบ VM ของคุณไปยังเอเจนต์รับรองความถูกต้องที่มีอยู่ได้ง่าย (ดูตัวอย่างด้านล่าง) วิธีการอื่น ๆ เช่น gssapi / kerberos มีอยู่ แต่มีความซับซ้อนมากขึ้น
sshpass
ในสถานการณ์ที่password
มีวิธีการรับรองความถูกต้องเท่านั้นที่มีอยู่sshpassสามารถใช้เพื่อป้อนรหัสผ่านโดยอัตโนมัติ กรุณาให้ความสนใจโดยเฉพาะอย่างยิ่งกับการรักษาความปลอดภัยที่ต้องคำนึงถึงในส่วนของหน้าคน ในทั้งสามตัวเลือกรหัสผ่านสามารถมองเห็นหรือจัดเก็บในรูปแบบธรรมดาในบางจุด :
ท่อไม่ระบุชื่อ (แนะนำโดย 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>&-
มันค่อนข้างยุ่งยากในการทุบตีเนื้อหาภาษาเขียนโปรแกรมง่ายขึ้น กระบวนการอื่นสามารถแนบกับไพพ์ / fd ของคุณก่อนที่จะเขียนรหัสผ่าน หน้าต่างแห่งโอกาสค่อนข้างสั้นและ จำกัด อยู่ที่กระบวนการหรือรูทของคุณ
ตัวแปรสภาพแวดล้อม
# Set your password in an environment variable
export SSHPASS='my_secret_password'
# Connect with sshpass -e
sshpass -e ssh user@host
คุณและรูทสามารถอ่านตัวแปรสภาพแวดล้อมของกระบวนการ (เช่นรหัสผ่านของคุณ) ขณะที่ sshpass กำลังทำงาน ( cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
) หน้าต่างแห่งโอกาสนั้นยาวกว่า แต่ยัง จำกัด อยู่เฉพาะกระบวนการหรือรูทของคุณไม่ใช่ผู้ใช้รายอื่น
อาร์กิวเมนต์บรรทัดคำสั่ง (ปลอดภัยน้อยที่สุด)
sshpass -p my_secret_password ssh user@host
สะดวกและปลอดภัยน้อยกว่าที่อธิบายไว้ในหน้า man ผู้ใช้ทุกคนสามารถเห็นอาร์กิวเมนต์บรรทัดคำสั่งได้ (เช่นps -ef | grep sshpass
) sshpass พยายามซ่อนอาร์กิวเมนต์ แต่ยังคงมีหน้าต่างที่ผู้ใช้ทุกคนสามารถเห็นรหัสผ่านของคุณผ่านการโต้แย้ง
ข้อความด้านข้าง
ตั้งค่าตัวแปร bash HISTCONTROLของคุณเป็นignorespace
หรือignoreboth
และนำหน้าคำสั่งที่ละเอียดอ่อนของคุณด้วยช่องว่าง พวกเขาจะไม่ถูกบันทึกไว้ในประวัติศาสตร์
การพิสูจน์ตัวตนคีย์สาธารณะ 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
วลีรหัสผ่านมีความสำคัญมาก ใครก็ตามที่ได้รับไฟล์กุญแจส่วนตัวจะไม่สามารถใช้งานได้หากไม่มีข้อความรหัสผ่าน
ติดตั้งเอเจนต์การพิสูจน์ตัวตน 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)
เชื่อมต่อตามปกติ
ssh user@host
ข้อดีคือกุญแจส่วนตัวของคุณจะถูกเข้ารหัสและคุณจะต้องป้อนข้อความรหัสผ่านเพียงครั้งเดียว (ผ่านวิธีการป้อนข้อมูลที่ปลอดภัยยิ่งขึ้น)