Có một vấn đề rất lạ. Tôi đã tạo một tập lệnh bash nhỏ chạy lệnh trên máy chủ từ xa thông qua ssh (sử dụng xác thực khóa chung).
Khi tôi chạy tập lệnh này theo cách thủ công từ dòng lệnh, nó hoạt động tốt, nhưng khi được đặt trong /etc/cron.hay thì nó bị Permission denied, please try again.
lỗi.
- Tôi rõ ràng đặt khóa trong tập lệnh bằng cách sử dụng
ssh -i /root/.ssh/id_rsa user@remote "command"
; - tập lệnh đang chạy với quyền root (tôi đã thêm một
echo `id` > /tmp/whoami.log
để kiểm tra lại); và - Khóa ssh không được bảo vệ bằng mật khẩu ...
Hệ thống là máy chủ Ubuntu 12.04, tôi không có nhiều quyền truy cập ở phía xa để khắc phục sự cố, nhưng như tôi đã nói, chạy ssh bằng tay hoặc cùng một tập lệnh bash từ dòng lệnh hoạt động.
Bất cứ ý tưởng tại sao điều này đang xảy ra hoặc làm thế nào để khắc phục nó ??
cập nhật
Hóa ra tôi đã nhầm, và khóa ssh được bảo vệ bằng mật khẩu (với móc khóa tải ssh-agent), do đó tại sao nó không thành công từ tập lệnh mà không phải khi chạy từ phiên bash. Thêm . ~/.keychain/$HOSTNAME-sh
vào kịch bản của tôi đã giải quyết vấn đề (nhờ @grawity, người đã chỉ cho tôi đi đúng hướng và cung cấp câu trả lời toàn diện).
SSH_AUTH_SOCK
có liên quan như thế nào (mặc dù tôi rất vui khi thử bất cứ điều gì). Tôi đang truy cập trực tiếp vào tệp chính và tệp chính không được bảo vệ bằng mật khẩu. Đối với KRB5CCNAME
một tìm kiếm nhanh cho thấy đây là một cái gì đó để làm với Kerberos. Một lần nữa - không thấy mối liên hệ với vấn đề này, nhưng có lẽ tôi đang thiếu một cái gì đó ở đây ...
-v
tùy chọn cho ssh
lệnh đó ...
ssh -i
lệnh trong cả hai trường hợp ... Tôi sẽ thử bỏ đặt các biến đó trong tập lệnh và xem. Đề nghị tốt để thêm -v
- Tôi cũng sẽ thêm nó.
SSH_AUTH_SOCK
vàKRB5CCNAME
biến môi trường.