bash: /home/user/.ssh/authorized_keys: Không có tệp hoặc thư mục như vậy


11

Tạo khóa ssh:

$ ssh-keygen -t rsa P ""

Di chuyển khóa sang khóa ủy quyền:

$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

bash: /home/user/.ssh/authorized_keys: No such file or directory

Cùng một câu hỏi, tại sao bạn cần thêm khóa vào máy chủ của riêng bạn?
Braiam

@Braiam Tôi đã làm điều này khi thư mục nhà của tôi nằm trên ổ đĩa mạng. Điều này cho phép tôi ssh đến bất kỳ máy nào gắn ổ đĩa này. Vì vậy, tôi đã không sshing đến máy chủ của riêng tôi.
FDinoff

Câu trả lời:


13
bash: /home/user/.ssh/authorized_keys: No such file or directory

Một yếu tố của đường dẫn /home/user/.ssh/không tồn tại; shell ( bash) kiểm tra chuyển hướng ( >>) trước khi nó thực thi lệnh ( cat). Nếu /home/usercó tồn tại và bạn thử điều này:

cat $HOME/.ssh/id_rsa.pub >> $HOME/test_this

Bây giờ bạn sẽ nhận được:

cat: /home/user/.ssh/id_rsa.pub: No such file or directory

Vì tập tin đó không thể ở nơi đó, nếu /home/user/.ssh/không tồn tại để bắt đầu.

Bạn đang làm theo một số hướng dẫn có thể đã bỏ qua một số bit. Để tạo thư mục:

mkdir $HOME/.ssh
chmod 700 $HOME/.ssh

Tuy nhiên, id_rsa.pubsẽ không có ở đó. Nó sẽ là bất cứ nơi nào bạn chạy ssh-keygenlệnh ở nơi đầu tiên.


6

Hãy chắc chắn rằng bạn đã đăng nhập với tư cách là người dùng mà bạn muốn tạo khóa ssh cho lần đầu tiên (hoặc được chuẩn bị để sửa đổi các đường dẫn trong lệnh thành thư mục chính xác).

Sau đó, chỉ cần tạo thư mục:

mkdir ~/.ssh

Tạo tập tin bằng catlệnh bạn đã liệt kê ở trên. Sau đó, đừng quên thiết lập quyền chính xác:

chmod 400 ~/.ssh/authorized_keys

Bạn có thể muốn đảm bảo rằng thư mục .ssh cũng có quyền thích hợp.


1
Như bình luận cuối cùng của bạn ngụ ý, vâng tôi thấy bạn cần phảichmod 700 ~/.ssh
KCD

6

Nếu có thể tôi luôn khuyến khích mọi người sử dụng công cụ dòng lệnh ssh-copy-id.

$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine

Nếu bạn chỉ muốn sao chép khóa công khai SSH mặc định của mình sang máy chủ từ xa, bạn chỉ cần chạy lệnh sau:

$ ssh-copy-id user@remoteserver

Tôi hiển thị một ví dụ đầy đủ thực tế về cách sử dụng công cụ này trong Hỏi & Đáp này có tiêu đề: Không thể chia sẻ kết nối ssh với rsync .


0

Điều này cũng có thể thất bại nếu, khi tạo khóa với ssh-keygen, bạn đặt cho nó một tên tệp. Tôi đã nhập một số tên my-ssh-file-name, và nó đã viết chìa khóa /Users/MyUserNamethay vì .sshthư mục. Nếu bạn để trống tên tệp, nó sẽ ghi .sshnhư mong đợi.


hoặc tất nhiên bạn có thể chỉ định viết trực tiếp khóa tùy chỉnh vào thư mục .ssh:-f ~/.ssh/custom-key-name
quốc hội
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.