mật khẩu ssh cho tên người dùng khác?


14

Tôi muốn làm một kết nối ssh không mật khẩu cho một dự án lật đổ. Hiện tại tôi đang sử dụng ssh + svn, và điều này hơi khó chịu, vì tôi phải nhập mật khẩu bất cứ khi nào tôi muốn giao dịch với máy chủ.

Tôi đã tìm thấy một số hướng dẫn trên web về cách tạo khóa cho ssh không mật khẩu, nhưng tất cả đều cho rằng tôi đang sử dụng cùng tên người dùng trên hệ thống từ xa như tôi dành cho hệ thống nhà của mình. Tuy nhiên, tên người dùng mà tôi sử dụng cho ssh + svn khác với tên tài khoản người dùng trên hệ thống mà tôi đang chạy. Làm thế nào để tôi thiết lập điều này đúng? Tôi đã không gặp may mắn khi chỉ thay đổi tên trong tệp chính.

Câu trả lời:


15

Bạn chỉ cần cung cấp tên người dùng của hệ thống khác trong svnlệnh:

$ svn co svn+ssh://otheruser@othersystem/path/to/repo

Để trả lời tiêu đề câu hỏi của bạn, quá:

$ ssh otheruser@othersystem

Điều này khiến sshdcho máy từ xa tìm kiếm ~otheruser/.ssh/authorized_keyskhóa chung tương ứng với khóa riêng trên máy bạn đang gõ lệnh trên.


1
Vì vậy, một phần của hướng dẫn là tạo một tệp .ssh/id_rsa.pubvà tải nó lên máy chủ từ xa. Khi tôi thực hiện, nó đã kết thúc với localusername @ localsystem. Điều đó nên được thay đổi thành remoteusername @ remotesystem, phải không? Cả địa phương và từ xa?
dùng394

5
Số Chỉ cần nối nội dung của địa phương của bạn id_rsa.pubđể authorized_keystrên hệ thống từ xa. Nó sẽ làm việc.
Warren Young

1
luân phiên, nhiều hệ thống có ssh-copy-id để giải quyết vấn đề này: "ssh-copy-id -i ~ / .ssh / id_rsa.pub tên người dùng @ remote-machine"
Matt Simmons

Thật không may, nhiều người thì không, và có vẻ như đây không phải là một phần tiêu chuẩn của OpenSSH, do đó, có ít nhất một vài triển khai khác nhau của tập lệnh này trôi nổi xung quanh.
Warren Young

Nếu bạn đang sử dụng cá ngựa gnome, hãy tự động triển khai các phím.
Maciej Piechotka

9

Có hai cách để làm điều này:

1) đưa người dùng @ vào url svn; điều này nói với svn + ssh để đăng nhập như người dùng đó. Tôi nghĩ rằng đó là một ý tưởng tồi từ góc độ bảo trì bởi vì những thứ như bên ngoài chỉ vào các phần khác của kho lưu trữ sẽ không hoạt động chính xác.

2) tạo một ~ / .ssh / config (được ghi lại là ssh_config ) có nội dung như sau:

Host othersystem
  User otheruser

bằng cách này, mọi nỗ lực chuyển ssh sang hệ thống khác sẽ được mặc định sử dụng otheruser. Điều này rất hữu ích cho bạn khi làm ssh thủ công cũng như khi bạn đang sử dụng svn.


5

Bạn không cần phải có cùng tên người dùng trên cả hai mashines. Miễn là bạn tạo khóa ( ssh-keygen), bạn phải sao chép dòng từ ~/.ssh/id_rsa.pubhoặc ~/.ssh/id_dsa.pub(tùy thuộc vào loại khóa) từ máy chủ cục bộ và nối nó ~/.ssh/authorized_keysvào từ xa.

% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Nếu bạn không muốn nhập remoteusermỗi lần, hãy thêm vào ~/.ssh/config:

Host remoteserver
    User remoteuser

Tái bút Các tên của chủ chốt có thể dưới hình thức localuser@localhostnhưng nó là chỉ một tên . Nó có thể là tốt như vậy myfavouritekey@myfavouritecomputervà không ai quan tâm.


Lệnh "cat" ở trên là cốt lõi của ssh-copy-idtập lệnh phổ biến nhưng không chuẩn được đề cập ở trên. Tôi nhận ra điều đó bởi vì không phải tất cả các hệ thống tôi sử dụng đều đi kèm ssh-copy-id, vì vậy tôi đã gõ một cái gì đó giống như vậy hơn một vài lần. :)
Warren Young

Tôi chưa bao giờ nghe nói về ssh-copy-id. Tôi thường sử dụng vimhoặc seahorse;)
Maciej Piechotka

0

Sau khi tôi tạo .ssh / config và chạy:

cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

Tôi gặp lỗi:

Bad owner or permissions on /usr/share/eprints3/.ssh/config

sau đó tôi thêm chmod 600 .ssh/configvà sau đó, nó chạy trơn tru.

enter code here

1
Sẽ tốt hơn nếu bạn thêm nó vào tệp ủy quyền, nếu không nó cũng sẽ xóa các khóa pub của người khác. Vì vậy, tốt hơn nếu bạn chỉnh sửa câu trả lời của mình với 'cat >> .ssh / ủy
quyền_keys
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.