Câu hỏi Chuyển tiếp lệnh ssh lồng nhau


Nói chung tôi có thể nghe thời gian thực âm thanh trên máy tính từ xa như:

ssh me@gate rec -t mp3 - | play -

ví dụ. trên máy tính có tên gate Tôi có thể thực hiện lệnh rec (hoặc là sox) và luồng âm thanh được truyền qua mạng, vì vậy tôi có thể phát lại theo thời gian thực thông qua play (hoặc là sox) chỉ huy.

Điều này làm việc OK, đặc biệt là vì tôi có quyền truy cập mật khẩu ít hơn gate từ sổ ghi chép của tôi (sử dụng authorized_keys & authorized_keys2).

Nhưng cấu trúc liên kết của tôi là:

+----+  internet   +------+  lan   +----------+
| my | ----------> | gate | -----> | internal |
+----+             +------+        +----------+

và tôi cần thực hiện rec bên trong internal comp và nó stdout nên được dẫn đến play lệnh trong my máy vi tính.

Vì vậy, khi tôi xếp tầng (làm tổ) sshs như:

ssh -t me@gate ssh me@internal rec -t mp3 -

(lưu ý -t cho ssh)

  • nên gate được truy cập ít mật khẩu hơn
  • trên gate được thực hiện lần thứ hai (lồng nhau) ssh
  • nên internal hỏi tôi mật khẩu (-t)
  • và khi tôi nhập mật khẩu, internal bắt đầu chính xác rec chỉ huy
  • và tôi có thể xem dữ liệu nhị phân nhận được trên thiết bị đầu cuối cục bộ của tôi.

Thật không may, điều này không hoạt động khi tôi cố gắng play, ví dụ. điều này

ssh -t me@gate ssh me@internal rec -t mp3 - | play -

không hoạt động, bởi vì Password: chuỗi đã được chuyển hướng (ví dụ: tôi không được nhắc nhập mật khẩu) và play đã nhầm lẫn.

Thiết lập quyền truy cập ít mật khẩu hơn giữa me@gate -> me@internal có thể giải quyết được vấn đề, nhưng tôi không muốn điều này - tôi muốn nhập mật khẩu theo cách thủ công internal comp.

Bất kỳ ý tưởng làm thế nào để giải quyết điều này?


2
2018-01-19 14:11


gốc


-t không yêu cầu mật khẩu ... "Tắt phân bổ giả thiết bị đầu cuối." - Attie
Lưu ý phụ: Tôi nghĩ bạn có thể có kiến ​​thức để trả lời câu hỏi cũ này. - Kamil Maciorowski


Các câu trả lời:


Tôi cho rằng internal lắng nghe tiêu chuẩn 22 Hải cảng.

Đầu tiên xây dựng một đường hầm:

ssh -N -L localhost:2222:internal:22 me@gate
# you can put it to background with &

Sau đó kết nối qua đường hầm. Kết nối này sẽ kết thúc tại internal:

ssh -p 2222 me@localhost rec -t mp3 - | play -

Bạn sẽ được yêu cầu nhập mật khẩu của mình internal mặc dù đường ống đang được sử dụng.


ssh -L … được giải thích trong câu trả lời của tôi cho một câu hỏi khác.


1
2018-01-19 14:24





Tôi cho rằng lời nhắc mật khẩu không bị cản trở nếu máy tính xách tay của bạn có thể truy cập internal trực tiếp?

Nếu có, hãy chơi với ProxyCommand tùy chọn cấu hình.

Đặt một cái gì đó như thế này trong ~/.ssh/config

Host internal-via-gate
    User me
    Hostname internal
    Port 22
    ProxyCommand ssh gate nc %h %p

Điều này sẽ cho phép bạn chỉ cần chạy ssh internal-via-gate, như thể bạn đang kết nối trực tiếp.


Nếu không, thì có thể xem xét chuyển tiếp cổng:

Host internal-via-gate
    User me
    Hostname internal
    Port 22
    ProxyCommand ssh gate nc %h %p
    LocalForward 27015 localhost:27015

Sau đó, kết nối và xác thực (ssh internal-via-gate).

Khi bạn đã đăng nhập, hãy chạy:

  • rec -t mp3 - | nc -l 27015 trên điều khiển từ xa và
  • nc localhost 27015 | play - trên máy địa phương.

0
2018-01-19 14:30