Lệnh duy nhất để đăng nhập vào SSH và chạy chương trình?


58

Có cách nào để cấu trúc một lệnh duy nhất để đăng nhập qua SSH đến máy chủ từ xa và chạy chương trình trên vỏ đăng nhập từ xa không?

Trong hướng dẫn OpenSSH, nó ghi "Nếu lệnh được chỉ định, nó được thực thi trên máy chủ từ xa thay vì vỏ đăng nhập." Vì vậy, ví dụ, ssh user@server mailsẽ đăng nhập vào máy chủ từ xa, hiển thị trạng thái hộp thư và sau đó đưa bạn trở lại vỏ cục bộ. Có cách nào để ở trên vỏ từ xa sau khi hiển thị trạng thái thư không?

Hơn nữa, ssh user@server [command]dường như không hoạt động nếu lệnh là một chương trình, ví dụ vim hoặc mutt. Có cách nào để đăng nhập vào shell từ xa và chạy chương trình trong khi vẫn ở trong shell từ xa trong chương trình và sau khi thoát khỏi chương trình, cuối cùng chỉ thoát khỏi một logoutlệnh cụ thể (giống như trong một phiên SSH thông thường)?

Cuối cùng tôi muốn có thể đặt một lệnh như một bí danh trong .bashrc cục bộ, để nó có thể được chạy nhanh khi muốn. Một ví dụ sẽ là đăng nhập qua SSH đến một máy chủ từ xa và mở mutt trên máy chủ từ xa để đọc hoặc gửi email.


Bạn có ý nghĩa gì khi ở trên vỏ từ xa sau khi hiển thị trạng thái thư? Điều đó có tương đương với việc thực hiện một ssh sau khi chạy lệnh mail ssh remote@server mail ; ssh remote@serverkhông? Ngoài ra bất kỳ lệnh thực thi từ xa nào cần một thiết bị đầu cuối sẽ không tồn tại / làm việc trên ssh phải không?
mkc

Chà, điều đó dường như hoạt động để chạy lệnh và sau đó lấy shell từ xa, nhưng nó thực hiện bằng cách mở một kết nối SSH và chạy lệnh và đóng kết nối SSH và sau đó mở một kết nối SSH khác. Có cách nào để làm tất cả điều này với kết nối đầu tiên không? Ngoài ra, điều này vẫn không cho phép lệnh để chạy một chương trình.
dùng981178

Câu trả lời:


90

Bạn đã thử ssh -t user@server "mail && bash"(hoặc thay thế bashbằng bất cứ thứ gì bạn thích) chưa?

Điều -tnày là cần thiết để tạo ra một giả cho bash để sử dụng như một vỏ tương tác.


1
Mặc dù, tôi sẽ thừa nhận, có lẽ tôi chỉ muốn chạy muttbên trong một tmuxhoặc screensau đó tôi có thể đính kèm và gắn lại theo ý muốn, ngoài ra tôi có thể chạy bao nhiêu vỏ bổ sung như tôi muốn.
jsbillings

1
Vâng, tôi đang tìm thấy hành vi khác nhau với lệnh này. Được sử dụng như trên (trong câu trả lời), nó vẫn chỉ hiển thị trạng thái hộp thư và sau đó đăng xuất, nhưng bây giờ cũng hiển thị rằng kết nối đã bị đóng. Được sử dụng như trên, nhưng với nano, ví dụ, thay vì thư, nó sẽ mở một phiên nano và sau đó khi thoát sẽ quay trở lại vỏ bash từ xa, sau đó phải thoát ra exitthay vì logout. Tôi không thể kiểm tra nó với mutt (hoặc tương tự).
dùng981178

Liệu -ttùy chọn tạo ra bất kỳ mối quan tâm bảo mật? Tôi chưa từng sử dụng cái này trước đây.
dùng981178

Theo như tôi biết -t không giới thiệu bất kỳ mối quan tâm bảo mật nào. Bạn đã thử thay thế &&bằng một ;?
brm

bất kỳ lệnh nào thoát với trạng thái thoát khác không sẽ khiến lệnh thứ hai không chạy, do logic shell.
jsbillings
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.