ssh máy chủ từ xa trên một số cổng khác 22 không có mật khẩu


16

Tôi thường kết nối với máy chủ từ xa với

ssh user@server.com -p 11000

và sau đó cung cấp mật khẩu mỗi lần cho người dùng. Làm cách nào để tránh nhập mật khẩu mỗi lần tôi kết nối bằng ssh?

Câu trả lời:


23

Đầu tiên , đặt cái này vào ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

Bạn sẽ có thể ssh server, sau đó nhập mật khẩu.

Thứ hai , kiểm tra~/.ssh/ xem bạn có tập tin được đặt tên id_rsaid_rsa.pub. Nếu không, bạn không có bất kỳ khóa nào được thiết lập, vì vậy bạn phải tạo một cặp bằng cách sử dụng ssh-keygen. Bạn có thể cung cấp cho các khóa mật khẩu hoặc không. Tệp được tạo id_rsa.pubsẽ trông như thế này:

ssh-rsa lotsofrandomtext user @ local

Ngày thứ ba , ssh đến máy chủ, tạo tập tin ~/.ssh/authorized_keysnếu nó không tồn tại. Sau đó nối thêm nội dung ~/.ssh/id_rsa.pubmà bạn đã tạo trước đó tại đây. Điều này có thể có nghĩa là sao chép nội dung tệp vào khay nhớ tạm của bạn, sau đó mở ~/.ssh/authorized_keystrong trình chỉnh sửa văn bản và dán nội dung .

Hoặc, sử dụng lệnh ssh-copy-id server (thay thế serverbằng tên trong ~/.ssh/config). Điều này sẽ làm điều tương tự như trên. Đôi khi tôi đã thấy ssh-copy-idbị mắc kẹt, vì vậy tôi không thực sự thích nó.

Bây giờ bạn có thể ssh chỉ với ssh server, trừ khi bạn đã chọn bảo vệ khóa riêng của mình bằng cụm mật khẩu. Nói chung, nếu bạn không sử dụng cụm mật khẩu, bạn nên bảo vệ khóa riêng của mình bằng các cách khác (ví dụ: mã hóa toàn bộ đĩa).

Thứ tư (chỉ cần nếu bạn bảo vệ khóa riêng của mình bằng cụm mật khẩu), hãy đặt mã này vào~/.bashrc :

start_ssh_agent() {
    # Try to use an existing agent
    save=~/.ssh-agent
    if [[ -e "$save" ]]
    then
        . "$save" > /dev/null
    fi
    # No existing agent, start a new one
    if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
    then
        ssh-agent > "$save"
        . "$save" > /dev/null
        ssh-add
    fi
}
start_ssh_agent

Với điều này, bạn sẽ chỉ cần nhập cụm mật khẩu một lần cho mỗi lần khởi động máy tính.


2
'Tường thuật' cũng nên bao gồm một cuộc thảo luận về cách tránh gõ cụm mật khẩu phiền phức đó mọi lúc. :-) ssh-agent và / hoặc móc khóa là những khả năng cần xem xét.
Faheem Mitha

1
Ngoài ra, nếu tên người dùng của bạn trên máy chủ từ xa không giống với tên người dùng của bạn trên máy chủ cục bộ, bạn có thể thêm một User userdòng vào ~/.ssh/config.
cjm

@Faheem Thật tuyệt, nhưng tôi chưa bao giờ thiết lập những thứ như vậy nên tôi không nghĩ mình đang ở vị trí để hướng dẫn người khác về nó :)
phunehehe

@FaheemMitha bạn đi đây :)
phunehehe

Này, muộn còn hơn không.
Faheem Mitha


4

Để bổ sung cho câu trả lời của phunehehe, hãy xem Hướng dẫn móc khóa Gentoo Linux để biết hướng dẫn về móc khóa . móc khóa cũng sử dụng ssh-agent . Trình nền ssh-agent làm cho cụm mật khẩu khả dụng (nó không khả dụng khi trình nền ssh-agent chết) nhưng móc khóa reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, để trích dẫn hướng dẫn.

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.