Cách lưu trữ thông tin xác thực SSH trong Terminal


33

Tôi mới sử dụng MacBook và tôi đang chạy El Capitan.

Tôi đang chuyển việc sử dụng máy của mình từ PC sang MacBook. Tôi là người dùng PuTTY và SuperPuTTY lâu năm trên PC.

Tôi muốn tạo và lưu thông tin đăng nhập vào máy chủ web của mình trong MacBook Terminal giống như tôi đã thực hiện trong SuperPuTTY trên PC.

Có thể lưu thông tin đăng nhập máy chủ web trong Mac Terminal không?

Đây là mục tiêu tổng thể của tôi:

Tôi muốn biết nếu có một cách dễ dàng trong Mac Terminal để lưu trữ thông tin đăng nhập dòng lệnh sau đây và sau đó sử dụng một số loại mã ngắn để kết nối với máy chủ web của tôi thông qua Terminal:

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

Tôi quản lý và kết nối với 5 máy chủ web khác nhau để sắp xếp và tổ chức thông tin đăng nhập theo phương thức kết nối ngắn / nhanh sẽ là một trình tiết kiệm thời gian rất lớn. Đặc biệt bởi vì mật khẩu của tôi là các chuỗi 64 ký tự khó hiểu.


Tôi đã loại bỏ các bình luận khi phiên bản chỉnh sửa của Tammy ba đã đánh bật điều này ra khỏi công viên về sự rõ ràng và hữu ích. Làm tốt!
bmike

Câu trả lời:


50

Bạn có thể sao chép khóa công khai của mình vào các máy từ xa. Miễn là chúng được bật xác thực khóa công khai và khóa chung của bạn có mặt trên máy từ xa, bạn có thể sshđến các máy mà không phải cung cấp mật khẩu.

Trước tiên, bạn sẽ cần tạo một cặp khóa công khai / riêng tư như vậy:

ssh-keygen -t rsa

Thực hiện theo các hướng dẫn. Khi nó hỏi bạn có muốn bảo vệ khóa bằng cụm mật khẩu hay không, hãy nói CÓ! Thực tế không tốt khi không bảo vệ mật khẩu các khóa của bạn và tôi sẽ chỉ cho bạn cách chỉ phải nhập mật khẩu một lần.

Nếu bạn đã có khóa, bạn có thể bỏ qua bước trên.

Bây giờ, giả sử khóa ssh của bạn tồn tại trên máy Mac ~/.ssh/id_rsa.pub, bạn có thể cài đặt nó trên máy từ xa bằng cách chạy:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Đối với ví dụ máy chủ cụ thể của bạn được trích dẫn ở trên, lệnh sẽ như sau:

cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Bạn sẽ phải nhập mật khẩu root@123.456.789.012để thực hiện bản sao này, nhưng đây sẽ là lần cuối cùng bạn cần làm điều này. Giả sử máy chủ từ xa sshdđược thiết lập để thực hiện xác thực khóa riêng tư, khi bạn ssh vào hộp, nó không nên hỏi bạn mật khẩu cho roottài khoản - thay vào đó, bạn sẽ hỏi bạn mật khẩu cho khóa của bạn . Đọc về cách làm điều này mà bạn không cần phải nhập mọi lúc.

Lặp lại ở trên cho mọi máy bạn muốn nhập vào bằng các phím thay vì mật khẩu.

Xin lưu ý, bất kỳ ai nắm giữ ~/.ssh/id_rsatệp của bạn đều có thể ssh vào máy này rootmà không cần cung cấp mật khẩu cho máy từ xa. Mật khẩu bảo vệ tệp khóa đảm bảo họ cần biết mật khẩu cho khóa đó để sử dụng. Hãy chắc chắn rằng tập tin đó là an toàn. Sử dụng mã hóa đĩa trên máy Mac của bạn và giữ các quyền trên tệp và ~/.ssh/thư mục chặt chẽ.

Để giúp sử dụng khóa dễ dàng hơn mà không phải nhập mật khẩu mỗi lần, OS X chạy một ssh-agentquy trình trong nền trên máy của bạn. Tác nhân này sẽ lưu trữ bộ khóa trong lần đầu tiên bạn sử dụng nó để bạn chỉ phải nhập mật khẩu của mình một lần. Nếu bạn chỉ ngủ mac, không bao giờ khởi động lại nó, bạn có thể đi trong thời gian dài mà không cần nhập mật khẩu.

Bạn có thể lưu trước bộ đệm tất cả các khóa SSH ssh-agentbằng cách chạy:

ssh-add

Bây giờ bạn chỉ cần nhớ mật khẩu chính , không phải nhiều mật khẩu tài khoản khác nhau. Tôi thường giữ mật khẩu chính của mình trong 1Password (không liên kết), đơn giản hóa thêm bao nhiêu mật khẩu tôi cần nhớ. Sau đó, tôi chỉ cần tra cứu chúng trong 1Password và cắt và dán chúng vào Terminal vào thời điểm kỳ lạ khi tôi khởi động lại máy Mac của mình và khiến việc chạy của tôi ssh-agentđược khởi động lại.

Nếu bạn kết hợp sao chép khóa của mình vào các máy từ xa với giải pháp quản lý kết nối Terminal.app trong câu hỏi này , bạn sẽ có một cái gì đó rất gần với PuTTY cho trải nghiệm kết nối GUI.


Về phía máy chủ, hãy kiểm tra /etc/ssh/sshd_configvà đảm bảo:

PubkeyAuthentication yes

được kích hoạt trong cấu hình (theo mặc định trong OpenSSH). Bạn cũng có thể muốn đặt:

PasswordAuthentication no

Mặc dù bạn đang ở đó nên xác thực dựa trên mật khẩu bị vô hiệu hóa và các khóa trở thành cách duy nhất để truy cập vào máy.

Bạn sẽ cần khởi động lại sshd trên máy nếu bạn thực hiện bất kỳ thay đổi nào đối với tệp cấu hình.


Cảm ơn @IamC - câu trả lời này rất hay và tôi chắc chắn sẽ làm việc. Tôi đã tạo một tài khoản trao đổi ngăn xếp ở đây trên Kênh Mac sáng nay để xem liệu tôi có thể tìm thấy một cách nhanh chóngdễ dàng để lưu thông tin đăng nhập trong Terminal hoặc trên Mac bằng cách nào đó. Có vẻ như làm như vậy là vô cùng phức tạp và không phải là một giải pháp khả thi cho tôi. Đây là lý do: <more>
tammy

<cont.> Tôi có quyền truy cập dòng lệnh vào một số máy chủ web (tất cả là 5). Tôi có một máy tính để bàn tại văn phòng làm việc của mình với quyền truy cập SSH (thông qua PuTTY) vào các máy chủ web này. Tôi có một máy tính xách tay lớn tại văn phòng nhà của tôi với SSH (thông qua PuTTY) truy cập vào các máy chủ web này. Tôi mới mua một chiếc MacBook Air để đi du lịch và thăm khách hàng tại chỗ. Nó hoàn hảo cho nhu cầu đặc biệt đó. Tôi đã hy vọng làm cho các kết nối SSH đến các máy chủ dễ dàng như thông qua PuTTY và SuperPuTTY trên PC. <chi tiết>
tammy

<cont.> Nhưng tôi không thể đi qua tuyến đường xác thực công khai vì tôi cần thay đổi cách PuTTY hoạt động trên máy tính tại nhà và văn phòng làm việc của tôi. Nhiệm vụ khiến máy Mac hoạt động như PC của tôi trở nên quá khó khăn, vì vậy tôi nghĩ rằng tôi sẽ phải tuân thủ quy trình sao chép và dán để kết nối từ máy Mac. Cảm ơn sự giúp đỡ của bạn. Tôi đánh giá rất cao việc bạn giúp tôi cố gắng làm cho quá trình của tôi đơn giản hơn.
tammy

2
@tammy bạn có thể rời khỏi PasswordAuthentication yesphía máy chủ và PuTTY sẽ tiếp tục hoạt động như nó luôn có trên máy Windows của bạn. Đây không phải là một hoặc một kịch bản - bạn có thể cho phép cả hai loại xác thực trên máy chủ. PuTTY cũng hỗ trợ ủy quyền khóa công khai / riêng tư như FWIW này. Bạn có thể sao chép các ~/.ssh/id_rsa*tệp của mình vào máy Windows và nhập chúng vào PuTTY để xác thực vào máy chủ. PuTTY, dưới mui xe, sử dụng cùng các thư viện OpenSSH chính xác để kết nối như sshtrên OS X.
Ian C.

1
ssh-addvẫn hoạt động ngay cả ở Sierra (OS X 10.12). Cảm ơn
SaxDaddy

4

Bạn có thể sử dụng sshpass để lưu mật khẩu và sẽ không phải chèn mọi lúc, đây không phải là thông lệ tốt (vấn đề bảo mật).

Thực hiện theo các hướng dẫn để cài đặt mac os x trên: https://gist.github.com/arunoda/7790979

Khi bạn đã cài đặt sshpass sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

làm điều tương tự cho 5 máy chủ web của bạn và bạn sẽ không cần phải nhập mật khẩu mọi lúc.


1
Tôi cảm thấy quá ngu ngốc về điều này. Tôi đoán việc sử dụng PC với PuTTY và SuperPuTTY chỉ cách tôi quá xa dòng lệnh cơ sở. Tôi đã chỉnh sửa OQ của mình với mục tiêu tổng thể của tôi. Có một cái nhìn.
tammy

Bây giờ tôi giả sử rằng bạn có thể kết nối với root@123.456.789.012 và chỉ muốn tự động hóa quy trình. Bạn về cơ bản không muốn gõ mỗi lần ssh -p 2200 root@123.456.789.012Password: **********************?
enzo

ssh-copy-idkhông phải là một phần của phân phối OS X tiêu chuẩn.
Ian C.

@IanC. Tôi nghĩ rằng tôi đã quên rằng tôi đã cài đặt nó với brew. sẽ sửa đổi câu trả lời của tôi
enzo

Bạn đã nhận nó @maetsoh - đó chính xác là những gì tôi muốn đạt được ở đây.
tammy

1

Ngoài các công cụ khóa chung / riêng, tệp .ssh / config có thể được cấu hình để dễ sử dụng các lệnh ssh, như bí danh, người dùng / cổng tự động trên mỗi máy chủ, tùy chọn ssh, lệnh proxy ...

Về cơ bản bất cứ điều gì phức tạp bạn có thể đặt trong lệnh ssh cũng có thể có trong tệp này.


0

Tôi đã chuyển Putty sang Mac dưới dạng gói ứng dụng gốc, vì vậy không cần macports hoặc thiết bị đầu cuối nếu bạn không phải là người dùng kỹ thuật.

Thông tin thêm với ảnh chụp màn hình có tại đây: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-av Available.html

Chúc mừng


Chào mừng bạn đến hỏi khác nhau! Hãy chắc chắn để trả lời câu hỏi trực tiếp. Nếu tôi đề cập đến một sản phẩm bạn làm việc, điều đó tốt, nhưng hãy cố gắng theo chủ đề trái ngược với việc dán cùng một lời quảng cáo tiếp thị trên nhiều bài đăng.
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.