Đường hầm SSH được tạo từ vị trí từ xa nhưng truy cập không đáng tin cậy từ máy tính cục bộ


0

Hai máy tính:

  1. Máy tính để bàn-Ubuntu; Đã sửa lỗi IP cục bộ, được kết nối với modem có cổng 22 mở và chuyển tiếp tới nó. Vì IP động tôi có tài khoản no-ip. Vì vậy, domain-Desktop-Ubfox.com chuyển tiếp các yêu cầu đến máy tính này.
  2. Remote Raspberry Pi 3 được kết nối với mạng di động có tất cả các yêu cầu đến được đóng bởi ISP.

Tôi cần quyền truy cập SSH từ Desktop-Ubuntu đến RPi. Bởi vì không thể trực tiếp tôi xây dựng một đường hầm. Sau khi sắp xếp hoặc cố gắng để nó hoạt động liên tục ( autosshví dụ), đây là lược đồ của tôi:

Tại RPi :

sshd_config:

 ClientAliveInterval 120     
 ClientAliveCountMax 720

Crontab cứ sau 5 phút để kiểm tra xem sshID tiến trình có phải là null không.
screenđược sử dụng để giữ sshđầu ra là một cửa sổ shell riêng biệt.

*/5 * * * * /bin/sh /path-to/check-ssh-tunnel.sh

check-ssh-tunnel.sh:

COMMAND="/usr/bin/screen -dmS ssh-Ubuntu /usr/bin/ssh -R 2255:localhost:22 user@domain-Desktop-Ubuntu.com -g"
COMMAND_SSH="/usr/bin/ssh -R 2255:localhost:22 domain-Desktop-Ubuntu.com -g"
PID=$(/usr/bin/pgrep -f -x "$COMMAND_SSH")
if [ "$PID" = "" ]
then
    $COMMAND
fi

Đây là liên quan ps aux | grep sshTôi nhận được 3 giờ sau khi khởi động lại:

pi        2128  0.0  0.2   5396  2252 ?        Ss     08:25     0:00 /usr/bin/SCREEN -dmS ssh-Desktop-Ubuntu /usr/bin/ssh -R 2255:localhost:22 user@domain-Desktop-Ubuntu.com -g  
pi        2130  0.0  0.5   9132  4748 pts/0    Ss+  **08:25**   0:00 /usr/bin/ssh -R 2255:localhost:22 user@domain-Desktop-Ubuntu.com -g

Nếu tôi kill 2128cron hoạt động và:

pi        4755  0.0  0.2   5396  2092 ?        Ss     11:25     0:00 /usr/bin/SCREEN -dmS ssh-Desktop-Ubuntu /usr/bin/ssh -R 2255:localhost:22 user@domain-Desktop-Ubuntu.com -g     
pi        4756  0.0  0.5   9132  4840 pts/0    Ss+  **11:25**   0:00 /usr/bin/ssh -R 2255:localhost:22 user@domain-Desktop-Ubuntu.com -g

Để truy cập RPi từ Desktop-Ubuntu :

ssh -p 2255 pi@localhost

Vấn đề của tôi là kết nối này hoạt động ngẫu nhiên:

  • đôi khi nó yêu cầu mật khẩu và tôi được kết nối
  • đôi khi ssh: connect to host localhost port 2255: Connection refused
  • đôi khi phải mất một thời gian dài để cuối cùng xuất ra ssh_exchange_identification: read: Connection reset by peer Sau khi thử lại : Connection refused.

Quay lại RPi dường như không có gì thay đổi:

$ screen -r      # to get the ssh window
user@domain-Desktop-Ubuntu.com~$ ssh -p 2255 pi@localhost
ssh: connect to host localhost port 2255: Connection refused

Tại thời điểm này và cho tất cả các bài kiểm tra đó, tôi đang quản lý RPi từ xa bằng cách sử dụng Teamviewer. Vì một số lý do tôi không muốn sử dụng nó trong tương lai trừ khi nó thực sự cần thiết. Đó là lý do tại sao tôi cần một đường hầm SSH.

Chuyện gì thế? Làm thế nào để làm cho đường hầm làm việc đáng tin cậy?


1
ClientAliveIntervalvv các vấn đề trên máy chủ. RPi của bạn là một khách hàng khi nó cố gắng thiết lập đường hầm. Các giá trị rất cao cho mục đích này, tôi nghĩ vậy. Kiểm tra câu hỏi này . Kết nối cố gắng thiết lập đường hầm sẽ thất bại nếu chuyển tiếp cổng không thành công. Kiểm tra câu hỏi này và sử dụng ExitOnForwardFailure=yes. Nếu hai liên kết của tôi có ích, xin vui lòng nêu câu trả lời của tôi ở đó và viết câu trả lời của riêng bạn ở đây (có thể có liên kết). Nếu họ không giúp đỡ, hãy đưa ra một số phản hồi.
Kamil Maciorowski

1
Về phía khách hàng, bạn có thể muốn sử dụng ServerAliveIntervalServerAliveCountMax(đây là cho ssh, không phải cho sshd).
Kamil Maciorowski

Liên kết của tôi có giúp được không? Nếu vậy, bạn sẽ viết một câu trả lời? hay tôi nên
Kamil Maciorowski

Vâng, tuyệt vời! Tôi đã nâng cấp cả câu trả lời được liên kết và nhận xét trước đó của bạn vài ngày trước. ExitOnForwardFailure=yeslà chìa khóa
dstonek
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.