autossh trong nền không hoạt động


12

Tôi đã thiết lập một đường hầm thông qua autossh.

Những công việc này:

autossh -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Tôi muốn chạy autossh trong nền. Có vẻ dễ dàng sử dụng -ftùy chọn.

Điều này không hoạt động, tuy nhiên:

autossh -f -M 33201 -N -i myIdFile -R 33101:localhost:22 autossh@myhost.com

Autossh chạy trong nền tốt, nhưng kết nối ssh dường như không thành công mỗi lần. Trong / var / syslog tôi thấy nhiều lần xuất hiện của:

autossh[3420]: ssh exited with error status 255; restarting ssh

Tôi đang làm gì sai? Một dự đoán hoang dã là nó có liên quan đến xác thực thông qua tệp chính. Làm thế nào tôi có thể gỡ lỗi này (thêm -v vào các tùy chọn ssh dường như không đăng nhập ở bất cứ đâu).

Chỉnh sửa: Tôi đã nhận được một số nhật ký ssh bằng tùy chọn -y

/usr/bin/ssh[3484]: debug1: Next authentication method: publickey
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_rsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_dsa
/usr/bin/ssh[3484]: debug1: Trying private key: /home/myuser/.ssh/id_ecdsa
/usr/bin/ssh[3484]: debug1: No more authentication methods to try.
/usr/bin/ssh[3484]: fatal: Permission denied (publickey).
autossh[3469]: ssh exited with error status 255; restarting ssh

Vì vậy, có vẻ như autossh không chấp nhận tệp nhận dạng của tôi ( -i myIdFile) khi sử dụng tùy chọn -f. Tại sao vậy?

(autossh 1.4c trên Raspian)


Tại sao sử dụng autossh cả? Bạn có thể sử dụng systemd cho "khởi động lại trên công cụ thất bại". Tôi đã tạo ra một ý chính với giải pháp của mình: gist.github.com/guettli/ từ
guettli

Câu trả lời:


29

Có vẻ như khi autossh giảm xuống nền (tùy chọn -f), nó đang thay đổi thư mục làm việc, nghĩa là các đường dẫn tương đối không còn hoạt động nữa. Hoặc cụ thể hơn: Bằng cách nhập đường dẫn tuyệt đối của tệp id của bạn, bạn có thể sẽ thành công.

Tôi đã tạo lại kịch bản bằng cách tạo khóa không có mật khẩu tại một vị trí không mặc định:

~/$ mkdir test
~/$ cd test
~/test$ ssh-keygen -f test_id_rsa

Tôi chỉ cần nhấn enter hai lần để tạo khóa không được bảo vệ bằng mật khẩu.

Tôi đã sao chép khóa mới vào máy chủ của mình (cho phép xác thực mật khẩu hiện tại):

~/test$ ssh-copy-id -i test_id_rsa user@server

Đầu tiên tôi xác nhận khóa đã hoạt động với ssh thông thường, sau đó sử dụng autossh như bạn:

~/test$ ssh -i test_id_rsa user@server
~/test$ autossh -M 13000 -N -i test_id_rsa user@server
^C

Cả hai đều hoạt động tốt, vì vậy tôi đã tạo lại vấn đề bạn gặp phải:

~/test$ autossh -f -M 13000 -N -i test_id_rsa user@server

Điều này đã không làm việc và sau đây đã được viết để /var/log/syslog:

autossh [2406]: ssh thoát sớm với trạng thái 255; thoát tự động

Bằng cách thay đổi đường dẫn của keyfile thành tuyệt đối, nó đã hoạt động:

~/test$ autossh -f -M 13000 -N -i /home/user/test/test_id_rsa user@server

Không có lỗi trong /var/log/syslog.


tuyệt vời, điều này làm việc.
henning77

Bạn đã cứu ngày của tôi!
arno_v

2
Tùy chọn -N rất quan trọng, nếu không, bạn sẽ nhận được "ssh thoát với trạng thái 0; thoát tự động". Cảm ơn!
dùng30747

Xác nhận, tôi cũng chỉ cần thêm đường dẫn vào tệp "id_rsa" như vậy: autossh -M 19001 -fN -y -i /home/pi/.ssh/id_rsa (cảm ơn @jmidgren)
Rich

4

Không chắc chắn những gì đang xảy ra với -f nhưng bạn cũng có thể không thấy nó:

nohup autossh -M 33201 -N -f -i myIdFile -R 33101:localhost:22 autossh@myhost.com &

nohup làm việc cho tôi, ngay cả khi không chỉ định tệp chính.
valadil

nohupcũng làm việc cho chạy autosshdưới runitở Alpine Linux
Stuart Cardall

0

Thêm các tham số sau vào SSH để bỏ qua "Bạn có chắc chắn muốn tiếp tục kết nối (có / không) không?"

-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

Lệnh cuối cùng sẽ có định dạng sau:

autossh -f -M $BASE_PORT -N -R $LOCAL_PORT:$LOCALHOST:$REMOTE_PORT $USER@$SERVER -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

nó làm việc cho tôi
bluebird_lboro

Không bật StrictHostKeyChecking=notrừ khi bạn kết nối với đồ chơi phù du nổi tiếng - và bạn chọn cách lười biếng.
Dolph
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.