Sử dụng shell không được cài đặt trên máy từ xa


9

Đưa ra kịch bản:

  • Máy từ xa : Máy chủ SSH; người dùng không có quyền quản trị;
  • Máy cục bộ : SSH client; người dùng có quyền quản trị.

Nếu người dùng , đăng nhập từ xa từ cục bộ , muốn tương tác với điều khiển từ xa bằng cách sử dụng trình bao không được cài đặt trên điều khiển từ xa , làm thế nào người dùng có thể thực hiện việc này một mình?

Ví dụ: người dùng sử dụng trên cục bộ và cũng muốn sử dụng nó trên điều khiển từ xa , nhưng điều khiển từ xa chỉ có bashzsh được cài đặt.


1
@mikeerv, cảm ơn. Không thể hiểu được lời kêu gọi downvote, mà tôi cho là kỳ lạ và loại trừ. Tôi không có vấn đề với các thay đổi thẻ, nhưng tôi có ngoại lệ cho câu hỏi của tôi được định dạng lại theo cách làm giảm sự rõ ràng. Tôi không sử dụng trò chuyện, vì vậy không thể thảo luận về nó ở đó.
sampablokuper

lạm dụng in đậm khó đọc . Và câu thiếu nhiều từ.
Gilles 'SO- ngừng trở nên xấu xa'

2
@sampablokuper bạn đã sử dụng phần chữ đậm để nhấn mạnh đến điểm khó đọc; hơn nữa, bạn đang tiếp cận khi mọi thứ được nhấn mạnh, không có gì .
derobert

1
@Gilles, không có câu nào trong câu hỏi của tôi bị thiếu từ cả.
sampablokuper

1
@derobert để phân loại (và do đó rõ ràng), nhiều như nhiều sách giáo khoa điện toán làm. Có ba hệ thống tương tác trong câu hỏi của tôi và tên của chúng (hoặc, nếu bạn thích, các tham chiếu đến chúng) được in đậm. Naught khác là in đậm. Trước khi ai đó hỏi (ý tôi là, thực sự! Tôi đã được yêu cầu biện minh cho các lựa chọn định dạng hoàn toàn dễ hiểu!), Vâng, một trong những hệ thống là con người và hai hệ thống còn lại không phải là con người. Và Gilles, cảm ơn, nhưng không, tôi không có ý sử dụng định dạng mã. Tôi thích sử dụng định dạng mã chỉ cho các lệnh hoặc mã, không có cái nào trong câu hỏi của tôi.
sampablokuper

Câu trả lời:


6

Cài đặt shell yêu thích của bạn trên máy từ xa. Bạn không cần bất kỳ đặc quyền quản trị viên nào để làm điều đó, bạn có thể cài đặt các chương trình trong thư mục chính của mình, điều đó không thuận tiện. Xem Cài đặt trên debian 5 32-bit mà không phải là root , Làm thế nào để cài đặt chương trình cục bộ mà không có đặc quyền sudo? , Theo dõi các chương trìnhcác câu hỏi khác .

Nếu bạn muốn tự động đăng nhập vào một vỏ mà bạn đã tự cài đặt thay vì vỏ mặc định, hãy xem Tạo vỏ mặc định zsh mà không cần quyền truy cập root

Nếu tất cả những gì bạn muốn làm là thao tác với các tệp từ xa, bạn có thể sử dụng SSHFS để gắn cây thư mục từ xa trên máy cục bộ của mình.

mkdir ~/remote.d
sshfs remote.example.com:/ ~/remote.d
ls ~/remote.d/

fusermount -u ~/remote.d

Nếu bạn không có chỗ trong thư mục nhà hoặc là tài khoản dùng chung, bạn có thể thực hiện với việc thiết lập đường hầm SSH ngược và gắn cây thư mục cục bộ của bạn trên máy từ xa bằng SSHFS , giả sử rằng hai máy đang chạy cùng một kiến ​​trúc ( cùng một biến thể unix trên cùng loại bộ xử lý). Nếu hai máy có kiến ​​trúc không tương thích, bạn thậm chí có thể cài đặt các chương trình cho kiến ​​trúc từ xa trong thư mục chính cục bộ của bạn. Điều này có thể không thuận tiện lắm vì bạn sẽ phải thiết lập đường dẫn chính xác cho các chương trình để tìm thư viện, tệp cấu hình và các tệp dữ liệu khác của chúng.

Emacs eshell tương thích với Tramp : nếu bạn đổi sang một thư mục từ xa trong Eshell, bạn sẽ thực hiện các lệnh trên máy từ xa.


3

Câu trả lời đơn giản: Không, bạn không thể sử dụng trên hộp từ xa một chương trình không được cài đặt trên hộp từ xa.

Giải pháp thay thế: Bạn không cần đặc quyền quản trị viên để cài đặt hệ vỏ trên hệ thống từ xa. Bạn có thể cài đặt nó trong thư mục nhà của bạn nhưng có lẽ bạn phải biên dịch nó từ các nguồn. Thường sử dụng một cái gì đó nhưconfigure --prefix=${HOME}/local

Lưu ý cuối cùng: bạn không thể thay đổi vỏ mặc định của mình thành vỏ không "chính thức" (xem /etc/shells) nhưng bạn có thể đặt một cái gì đó như exec fishtrong.bashrc


2

Người dùng có thể sử dụng sshfs để gắn $ HOME từ xa trên máy cục bộ của mình. Trong trường hợp như vậy, người dùng sẽ không sử dụng trực tiếp vỏ của mình trên máy từ xa, nhưng, tốt hơn là không có gì.


2

Cách tiếp cận cơ bản là sao chép shell thực thi vào máy chủ từ xa bằng cách sử dụng scprồi thực thi nó bằng cách sử dụng ssh, vd

scp /usr/bin/fish remote:fish && ssh -t remote '~/fish'

Điều -tnày là cần thiết để sshphân bổ một tty, điều mà nó sẽ không làm theo mặc định khi thực hiện một lệnh từ xa.

Điều này giả định rằng máy chủ từ xa của bạn đang chạy cùng một hệ điều hành. Nếu không, bạn muốn tìm ra hệ điều hành từ xa và biên dịch nhị phân (có thể là tĩnh) mà bạn có thể sao chép.


2

Câu trả lời rõ ràng, "cài đặt lệnh trên máy từ xa", là giải pháp sạch nhất, vì vậy chúng ta không nên bỏ qua nó:

Nếu điều này có thể để cài đặt lệnh là root, ví dụ với
sudo apt-get install fish,
lệnh có thể được chạy như thế này:

ssh remote -t fish


Câu hỏi là về những việc cần làm khi chúng ta không thể cài đặt lệnh trên máy tính từ xa.
Hay cụ thể hơn, đó là về trường hợp chúng ta không thể cài đặt lệnh dưới dạng root .
Điều đó không có nghĩa là chúng tôi không thể cài đặt!

Những gì vẫn có thể là cài đặt lệnh bên trong thư mục chính bằng cách xây dựng nó từ nguồn .

Điều này có lợi thế là nó chăm sóc tất cả các tệp hỗ trợ liên quan có thể đi kèm với một lệnh và cách chương trình tìm thấy chúng. Trong fishví dụ shell, đây là các hàm hoàn thành , v.v., tất cả đều không khả dụng nếu chúng ta chỉ sao chép fishtệp nhị phân.

Xây dựng một lệnh từ nguồn cần các công cụ phát triển và các tệp phát triển của các thư viện đã sử dụng, có thể quá phức tạp.

Nhưng nhiều chương trình đi kèm với tất cả những gì họ cần được gói trong các nguồn, vì vậy nó có thể dễ dàng. Khó để nói trước, nhưng người ta chỉ có thể thử.

Để cài đặt lệnh vào thư mục chính, configuređược cung cấp đường dẫn để cài đặt - cần phải được kiểm tra trong hướng dẫn xây dựng. Ví dụ:

mkdir ~/local
./configure --prefix=~/local 
make
make install

Lưu ý rằng nó không sudo make installnhư bình thường - vì đó là toàn bộ điểm cài đặt cục bộ để không cần sudo ở đây.

Để biết thông tin chung về việc cài đặt các chương trình từ nguồn, hãy xem Askubfox.SE: Làm cách nào để tôi cài đặt tệp .tar.gz (hoặc .tar.bz2)?


0

Tôi không nghĩ bạn có thể chạy shell trên máy này trên máy khác. Cách duy nhất để chạy nó trên máy từ xa là cài đặt nó.

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.