Khi nào ssh -t không thích hợp thay vì ssh?


15

Sử dụng ssh -tthay vì sshkết nối với máy chủ từ xa có một số lợi thế. Ví dụ: tôi có thể trực tiếp chỉnh sửa một tệp bằng vim : ssh -t host vim foo.txt, nếu không thì sẽ thất bại.

Có bất kỳ trường hợp nào trong đó phân bổ một (giả) sẽ là một điều xấu khi sử dụng ssh?

Câu trả lời:


11

Khi đường ống đầu vào hoặc lấy lại đầu vào, đó là cách sử dụng điển hình của "lệnh máy chủ ssh". Các ký tự điều khiển có thể được diễn giải bởi lớp TTY (^ S cho ví dụ cũ)


10

Có, đôi khi bạn muốn tạo một kết nối nền, im lặng, ví dụ như khi thiết lập một đường hầm (ví dụ: SOCKS proxy). Trong các ví dụ như vậy, bạn muốn quá trình KHÔNG có tty.

Đây là một ví dụ về việc thiết lập chuyển tiếp cổng từ localhost đến một số máy chủ từ xa ...

ssh -l username -fNTL 8073:server:873

Sau khi điều này đã được thiết lập, sau đó bạn có thể rsync đến localhost, thay vì đến máy chủ từ xa, do đó, đường hầm rsync của bạn thông qua ssh...

rsync --port=8073 -a me@localhost::myStuff /tmp/myStuff/

Bạn sẽ nói điều này nếu rsync đi ra ngoài serverbị chặn, nhưng sshkhông.


Cảm ơn, điều này cũng đúng, nhưng tôi đã bỏ phiếu khác vì đây là vấn đề nghiêm trọng hơn mà tôi bỏ qua.
Alex J

3

Ngoài những điều trên ...

(1) Xử lý thoát tilda khác nhau:

"~." thoát sẽ ngắt kết nối bạn nếu bạn có một pty (-t). Đối với một lệnh chạy dài, bạn có thể muốn ngăn ai đó vô tình tạm dừng quá trình nếu họ gõ ~.

$ ssh hostname.tomontime.com -t ngủ 60
[loại ~. và nó ngắt kết nối]
Kết nối với hostname.tomontime.com đã đóng.

Tên máy chủ $ ssh -T ngủ 60
[Tôi gõ ~. và nó xử lý nó như tổ hợp phím thông thường, mà lệnh ngủ bỏ qua.]
~.
~.

Hãy thử điều tương tự với CTRL-C. Bạn sẽ thấy rằng với -t bạn đang gửi CTRL-C đến "giấc ngủ". Với -T bạn đang gửi CTRL-C đến chương trình ssh đang chạy trên máy của bạn. Có thể đôi khi điều này tạo ra sự khác biệt (tức là chương trình xử lý INT khác với HUP)

(2) Bạn chỉ muốn giảm thiểu hoạt động kết nối mạng hoặc pty.

Khi cố gắng khởi động lại một máy hết ptys, bạn không muốn khuyến khích hệ thống cố gắng phân bổ một pty! Điều này cũng giảm thiểu các kết nối mạng sẽ phải đóng (trì hoãn khởi động lại).

Điều này sẽ hoạt động nhanh hơn và đáng tin cậy hơn:
ssh -T khởi động lại tên máy chủ

Điều này có thể có vấn đề:
khởi động lại tên máy chủ ssh -t


2

ssh -t tạo một thiết bị đầu cuối giả trên máy từ xa. Điều này rất hữu ích nếu bạn đang xâu chuỗi các lệnh ssh thông qua nhiều máy chủ và muốn có một thiết bị đầu cuối thực sự ở phía xa (vì vậy bạn có thể sử dụng 'vi' chẳng hạn).

Bạn có thể KHÔNG muốn '-t' khi tập lệnh đăng nhập hoạt động khác đi nếu có thiết bị đầu cuối. IMHO thực tế không tốt, nhưng tôi đã thấy các trường hợp trong đó tập lệnh đăng nhập kiểm tra TTY trước 1) đặt lời nhắc và 2) mở rộng đường dẫn đến nhiều ứng dụng tương tác.

Trong một trường hợp khác (được đề cập bởi TomOnTime ở trên), tôi thực sự đã gặp phải trường hợp tất cả TTY (ptys) được sử dụng hết. Rõ ràng là một cấu hình sai, nhưng không cần phải nhai một tài nguyên cho một loạt các đường hầm và rsyncs.

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.