Đăng nhập một lần SSH thường đạt được với xác thực khóa chung và tác nhân xác thực. Bạn có thể dễ dàng thêm khóa VM thử nghiệm của mình vào một tác nhân xác thực hiện có (xem ví dụ bên dưới). Các phương thức khác như gssapi / kerberos tồn tại nhưng phức tạp hơn.
sshpass
Trong trường hợp password
phương thức xác thực duy nhất khả dụng, sshpass có thể được sử dụng để tự động nhập mật khẩu. Vui lòng chú ý đặc biệt đến phần TƯ VẤN BẢO MẬT của trang người đàn ông . Trong cả ba tùy chọn, mật khẩu được hiển thị hoặc được lưu trữ trong bản rõ tại một số điểm :
Đường ống ẩn danh (được đề xuất bởi 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>&-
Nó khá cồng kềnh trong bash, dễ dàng hơn với các ngôn ngữ lập trình. Một quy trình khác có thể đính kèm vào ống / fd của bạn trước khi mật khẩu được viết. Cửa sổ cơ hội khá ngắn và giới hạn trong các quy trình hoặc root của bạn.
Biến môi trường
# Set your password in an environment variable
export SSHPASS='my_secret_password'
# Connect with sshpass -e
sshpass -e ssh user@host
Bạn và root có thể đọc các biến môi trường của quy trình (ví dụ mật khẩu của bạn) trong khi sshpass đang chạy ( cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). Cửa sổ cơ hội dài hơn nhiều nhưng vẫn giới hạn trong các quy trình hoặc root của riêng bạn chứ không phải người dùng khác.
Đối số dòng lệnh (ít an toàn nhất)
sshpass -p my_secret_password ssh user@host
Điều này là thuận tiện nhưng kém an toàn như được mô tả trong trang người đàn ông. Đối số dòng lệnh được hiển thị cho tất cả người dùng (ví dụ ps -ef | grep sshpass
). sshpass cố gắng ẩn đối số, nhưng vẫn có một cửa sổ trong đó tất cả người dùng có thể thấy mật khẩu của bạn được truyền bằng đối số.
Lưu ý bên
Đặt biến bash HISTCONTROL của bạn thành ignorespace
hoặc ignoreboth
và tiền tố các lệnh nhạy cảm của bạn với một khoảng trắng . Họ sẽ không được cứu trong lịch sử.
Xác thực khóa công khai 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
Cụm mật khẩu rất quan trọng. Bất cứ ai bằng cách nào đó có được tệp khóa riêng sẽ không thể sử dụng tệp mà không có cụm mật khẩu.
Thiết lập tác nhân xác thực 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)
Kết nối như bình thường
ssh user@host
Ưu điểm là khóa riêng của bạn được mã hóa và bạn chỉ cần nhập cụm mật khẩu của nó một lần (thông qua phương thức nhập an toàn hơn).