Lưu trữ vĩnh viễn địa chỉ khi sử dụng SSH


12

Tôi có một vài máy chủ từ xa mà tôi kết nối thông qua thiết bị đầu cuối. Các máy chủ không có tên miền, chỉ có một địa chỉ IP khó nhớ khi tôi có một vài trong số chúng.

Có cách nào để lưu trữ vĩnh viễn các giá trị trong thiết bị đầu cuối, để tôi có thể làm như sau không?

server1 = 111.222.111.222

Và gõ các lệnh như:

ssh root@server1

thay vì:

ssh root@111.222.111.222

Câu trả lời:


22

Đối với các kết nối SSH, bạn có thể tạo tệp cấu hình người dùng ~/.ssh/configvà đặt ánh xạ vào đó, vd

Host server1
  Hostname      111.222.111.222

Bạn có thể dễ dàng thêm các trường khác như Port(đối với các cổng không chuẩn) và User(hữu ích nếu tên người dùng của bạn trên hệ thống từ xa khác với các trường trên hệ thống cục bộ). Xem man ssh_configđể biết chi tiết đầy đủ.


14

Vâng, chỉ cần viết chúng trong tập tin /etc/hosts. Nó có cú pháp sau:

1.2.3.4 servername additional_servername

Ở đâu:

  • 1.2.3.4 là địa chỉ IP
  • servername là tên
  • additional_servername là một tên tùy chọn

Sau khi lưu, bạn có thể truy cập máy chủ theo tên của nó.


@theTHER Nếu đây là câu trả lời bạn đã thực hiện, vui lòng xem xét chấp nhận nó (đánh dấu bên dưới các nút tăng / giảm phiếu).
jpmc26

8

Tất nhiên đối với vấn đề cụ thể của bạn, bạn muốn làm theo lời khuyên của @chaos và @steeldo, nhưng trong trường hợp chung, để "lưu trữ giá trị vĩnh viễn trong thiết bị đầu cuối", bạn đang tìm kiếm các biến shell. Cách đặt chúng sẽ phụ thuộc vào vỏ của bạn (tôi đoán echo $SHELLsẽ cung cấp thông tin liên quan).

Nếu "vĩnh viễn" bạn có nghĩa là "miễn là tôi không thoát khỏi phiên cuối này", thì bạn chỉ cần sử dụng export server1=111.222.111.222lệnh nếu bạn đang sử dụng trình bashbao dựa trên cơ sở ( setenv server1 111.222.111.222đối với trình csh/tcshbao dựa trên cơ sở, nếu tôi nhớ chính xác). Sau đó, bạn có thể truy cập vào biến của mình bằng cách thêm tiền tố vào $ : ssh root@$server1.

Nếu "vĩnh viễn" bạn có nghĩa là "mỗi lần tôi khởi chạy một thiết bị đầu cuối mới", thì bạn sẽ cần đặt biến của mình trong một trong các tệp shell init. Ví dụ: trong $HOME/.bashrccác bashshell dựa trên, hoặc $HOME/.cshrc- có lẽ sử dụng cú pháp tương tự như được đề cập trong đoạn trước. Lưu ý rằng bạn sẽ phải lấy nguồn của tệp init (ví dụ source $HOME/.bashrchoặc mở một vỏ mới để thay đổi được tính đến.

NB: Trả lời từ bộ nhớ, có thể yêu cầu một số điều chỉnh nhỏ.


2
Bằng cách cố định, tôi cố gắng ngay cả khi khởi động lại máy tính. Tôi sẽ xem xét điều này, nó có thể có ích một thời gian.
bất thường

Sau đó, phương pháp thứ hai được áp dụng (tập tin shell init).
Skippy le Grand Gourou

1

Không phải là một câu trả lời trực tiếp cho câu hỏi (sự hỗn loạn và người thép đã cung cấp những gì tôi nghĩ sẽ là giải pháp theo nghĩa đen tốt nhất), nhưng nếu bạn chỉ cần ssh cho một người dùng tại một địa chỉ trong phần lớn các trường hợp, thì hãy xem xét chỉnh sửa các .bash_aliasestập tin trong thư mục chính của bạn nên có ích, như bạn có thể tạo một bí danh cho toàn bộ lệnh terminal.


0

Các câu trả lời cụ thể là rất tốt.

Tuy nhiên, nói chung, nếu bạn muốn có một số thứ được xác định / thiết lập trong trình bao, chỉ cần viết một tập lệnh để thực hiện và sau đó thực hiện nó với sourcehoặc .khi bạn muốn thiết lập đó có hiệu lực.

Nếu đó là thứ bạn muốn mọi lúc, bạn có thể nguồn nó trong .profile (cho shell đăng nhập) hoặc .bashrc cho tất cả các shell (nếu bạn sử dụng bash).

Với cách tiếp cận như thế này, bạn có thể có nhiều tập lệnh để thiết lập các môi trường làm việc khác nhau miễn là bạn đảm bảo chúng không giẫm lên nhau nếu bạn gọi một trong số chúng sau khi gọi một tập lệnh khác trước.

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.