Cách quản lý nhiều phiên ssh dễ dàng trên Mac OS X


9

Trong công việc sắp tới tôi sẽ xử lý nhiều máy chủ có quyền truy cập SSH. Nó sẽ giống như ~ 100-120 máy chủ, với tên người dùng khác nhau trên hầu hết các máy chủ và tôi khá chắc chắn rằng tôi sẽ không nhớ từng tên miền của máy chủ, không đề cập đến tên người dùng nào trên mỗi máy chủ.

Có công cụ nào dành cho Mac OS X (tốt nhất là Lion) cho phép tôi xác định phiên cho mỗi máy chủ (trong phiên tôi có nghĩa là tên người dùng và một số tùy chọn ssh), hiển thị danh sách các phiên đó và tự động kết nối khi nhấp / chọn?

Câu trả lời:


6

Có hai cách tôi quản lý hoặc đã thấy mọi người quản lý dữ liệu SSH:

Tốt 'ole, dòng lệnh, văn bản thuần túy, tập tin ssh_config .

Tạo một tập tin gọi là configbên trong ~/.ssh. Bạn có thể chỉ định các tham số toàn cục bằng cách đặt chúng trên bất kỳ khai báo máy chủ nào. Khi tôi bắt đầu sử dụng MacPorts , tôi phải xác định rõ ràng Khóa riêng SSH mặc định để sử dụng tự động khi kết nối, như là dòng đầu tiên của tệp tôi đặt;

IdentityFile ~/.ssh/id_rsa

Khi bạn xác định quy tắc tùy chỉnh cho máy chủ (và thậm chí bạn có thể sử dụng * làm ký tự đại diện), nó trông giống như thế này:

Host prod-*
  User jason
  Port 2222
  LocalForward 5901 localhost:5901
  IdentityFile ~/.ssh/work-id_rsa

Sau đó, khi tôi chạy ssh prod-scriptchẳng hạn, tất cả các quy tắc còn lại sẽ được áp dụng tự động.


Rất nhiều người không muốn tự quản lý tất cả nội dung của mình theo cách rườm rà như vậy, nhanh chóng tìm thấy JellyfiSSH . ( Liên kết Mac App Store . Những người tương tự cũng trở nên rất khó chịu khi nó không thể tải xuống miễn phí.)

JellyfiSSH cung cấp cho bạn quyền truy cập GUI vào hầu hết mọi thứ có thể được chỉ định trong dòng lệnh hoặc tệp ssh_config. JellyfiSSH chỉ là một ứng dụng lưu trữ cấu hình cho mục đích tổ chức, bởi vì nó tạo ra các lệnh dựa trên các tùy chọn bạn đặt và khi nhấp vào kết nối, sẽ mở một cửa sổ đầu cuối mới với tất cả các tùy chọn của bạn được xác định trên dòng lệnh. JellyfiSSH không phải là một ứng dụng đầu cuối.


JellyfiSSH trông giống như ứng dụng tôi đang tìm kiếm. Cảm ơn!
kars7e

FYI: man ssh_configtừ Terminal sẽ cung cấp thông tin tệp cấu hình máy khách OpenSSH SSH có sẵn trên bản cài đặt hệ thống hiện tại của bạn. Mà tại thời điểm bình luận, gần đây hơn liên kết nhà phát triển ở trên.
l --marc l

5

Bạn có thể tạo các tệp như Example.commandsau đó làm cho nó có thể thực thi được: chmod 755 Example.commandvà bấm đúp vào tệp để mở kết nối:

#!/bin/sh

exec /usr/bin/ssh username@example.com

exit 0

Nếu bạn chỉ muốn có thể kết nối từ dòng lệnh bằng cách sử dụng một bí danh (từ dễ nhớ), bạn có thể thiết lập chúng trong ~ / .ssh / config

Host foo
HostName some.really.long.hostname.here.com
Port 22
User bigfun

Sau đó, bạn có thể kết nối bằng cách sử dụng máy chủ foo

ssh foo

Hoặc bạn chỉ có thể tạo các hàm trong tệp cấu hình shell của mình (~ / .bashrc hoặc ~ / .zshenv):

s1 () {
    ssh -v username@example.com
}

sau đó bạn có thể kết nối với example.comchỉ bằng cách gõ s1vào dòng lệnh và nó sẽ sử dụng mức độ chi tiết cấp 1.

Cuối cùng, bạn có thể sử dụng tự động hoàn thành ssh, nhưng cú pháp cho điều đó sẽ phụ thuộc vào lựa chọn của bạn. Google nhanh chóng cho 'ssh tự động hoàn thành YourShellHere' sẽ xuất hiện một số ví dụ.

Sử dụng cụm mật khẩu và OS X Keychain

Điều quan trọng nhất, IMO, là thiết lập ssh để hoạt động với cụm mật khẩu. OS X có tích hợp móc khóa tuyệt vời tích hợp từ Leopard.

ssh-keygen -t dsa -f ~/.ssh/id_dsa -C "you@exampledomain.com"

cat ~/.ssh/id_dsa.pub | ssh you@host.domain 'cat – >> ~/.ssh/authorized_keys'

(Nguồn: http://www.paostern.com/blog/?p=369 .)

Sau đó, khi bạn ssh sang một máy mới, móc khóa OS X sẽ nhắc bạn cho cụm mật khẩu ssh của bạn

Xem thêm http://www.dribin.org/dave/blog/archives/2007/11/28/ssh_agent_leopard/ để biết mô tả đầy đủ hơn. Bài viết cũ hơn, nhưng Lion làm việc theo cách tương tự.

Đừng quên Dropbox

Nếu bạn đăng nhập vào nhiều máy, bạn có thể đồng bộ hóa ~/.ssh/configtệp của mình qua Dropbox. Tôi giữ của tôi trong ~/Dropbox/etc/ssh/config.txtvà sau đó tôi làm:

cd ~/.ssh
ln -s ../Dropbox/etc/ssh/config.txt config

Tôi làm điều tương tự như với ~ / .zshenv của tôi:

cd
ln -s Dropbox/etc/zshenv.sh .zshenv

Trên thực tế, tôi đã đặt tất cả các tập lệnh shell của mình vào ~ / Dropbox / bin / và thêm nó vào $ PATH của tôi, chỉ để trang trải tất cả các cơ sở của tôi.


Dropbox là một nơi tuyệt vời để lưu trữ các tập lệnh shell mà tôi không muốn quản lý trong git / trên GitHub. Cảm ơn vì đã châm ngòi cho khoảnh khắc 'aha' đó, TJ!
Jason Salaz

-2

Bạn có thể dùng thử ứng dụng vSSH cho Mac OS X ( dựa trên PuTTY ).

  • Quản lý danh sách kết nối (máy chủ, cổng, tên người dùng, mật khẩu, khóa và rất nhiều cài đặt khác)
  • Có thể hầu hết mọi thứ mà PuTTY có thể
  • Giao diện đa cửa sổ đa tab
  • Hỗ trợ macro (bạn shell script dưới dạng các mục menu để truy cập nhanh)
  • Đồng bộ hóa iCloud (kết nối, macro và khóa) với các ứng dụng kiểm soát vSSHSSH cho iOS

Có sẵn trên Mac AppStore .


Chào mừng bạn đến hỏi khác nhau! Vui lòng đọc trung tâm trợ giúp về tự quảng cáo và bao gồm từ chối trách nhiệm nếu bạn là tác giả của sản phẩm trong câu trả lời của bạn.
grg

1
Làm thế nào điều này thực sự cho phép một danh sách các phiên có thể nhấp? Nếu bạn có thể chỉnh sửa một số tiếp thị chung chung và tập trung câu hỏi này vào câu hỏi chính xác, nó có thể sẽ có phản ứng tốt hơn.
bmike
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.