Vấn đề truy cập AWS ssh 'Quyền bị từ chối (khóa công khai)' [đã đóng]


284

Làm thế nào để kết nối với một cá thể AWS thông qua ssh?

Tôi có:

  1. Đăng ký tại AWS;
  2. Tạo khóa công khai và chứng chỉ tại trang web AWS và lưu chúng vào đĩa;
  3. Đã đi đến giao diện điều khiển của tôi và tạo các biến môi trường:

    $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
    $ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    $ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    
  4. Đã sử dụng API AWS để sử dụng cặp khóa này và lưu cặp khóa vào tệp:

    $ ec2-add-keypair ec2-keypair > ec2-keypair.pem
    
  5. Bắt đầu một phiên bản AWS Ubuntu 9 bằng cách sử dụng khóa này:

    $ ec2-run-instances ami-ed46a784 -k ec2-keypair
    
  6. Đã cố thiết lập kết nối ssh với thể hiện:

    $ ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com
    OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: Applying options for *
    debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22.
    debug1: Connection established.
    debug1: identity file ec2-keypair.pem type -1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH*
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: server->client aes128-cbc hmac-md5 none
    debug1: kex: client->server aes128-cbc hmac-md5 none
    debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
    debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
    debug1: Host 'ec2-174-129-185-190.compute-1.amazonaws.com' is known and matches the RSA host key.
    debug1: Found key in /home/default/.ssh/known_hosts:11
    debug1: ssh_rsa_verify: signature correct
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: ec2-keypair.pem
    debug1: read PEM private key done: type RSA
    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    Permission denied (publickey).
    

    Điều gì có thể là vấn đề và làm thế nào để làm cho nó hoạt động?


2
Trớ trêu là tôi sử dụng "root" làm tên người dùng nhưng "ubfox" (những gì bạn đã đề cập) là tên phù hợp cho AMI của tôi và cảm ơn vì bài đăng của bạn!
realjin

Câu trả lời:


512

Đối với phiên bản Ubuntu:

chmod 600 ec2-keypair.pem
ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com

Đối với các trường hợp khác, bạn có thể phải sử dụng ec2-userthay vì ubuntu.

Hầu hết các hình ảnh EC2 Linux mà tôi đã sử dụng chỉ có người dùng root được tạo theo mặc định.

Xem thêm: http://www.youtube.com/watch?v=WBro0TEAd7g


6
Bạn đá! Thật đơn giản!
Alex

50
Bạn cũng có thể sử dụng ssh-add ec2-
key Pair.pem

12
nếu bạn thử root và bạn nhận được "Vui lòng đăng nhập với tư cách là người dùng ec2 chứ không phải người dùng root." "sử dụng người dùng ec2 thay cho root.
Tony

8
Và một số hình ảnh Ubuntu dường như chỉ có người dùng "ubfox". (Có thể sudo để root.)
Hợp đồng của Giáo sư Falken vi phạm

1
Siêu, siêu hữu ích.
NSCoder

93

Bây giơ là:

ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]

Cảm ơn. Tôi mất nhiều thời gian để tìm ra điều này - nó không được đề cập trong thông tin kết nối từ bảng điều khiển! Nó cho bạn biết khi bạn cố gắng sử dụng root, nhưng tôi nghĩ người dùng ec2 là một tham chiếu đến tên người dùng của tôi. Đừng!
Adrian Mouat

1
Trời ơi. Không phải là một miếng ngon dễ tìm. Cảm ơn!
vroomfondel

cảm ơn, không dễ dàng tìm thấy cái này

Rất tốt! Cảm ơn bạn!
viana

46

Các bản phát hành của Canonical sử dụng 'ubfox' của người dùng theo mặc định cho bất kỳ ai hạ cánh tại đây với hình ảnh ubfox đang gặp vấn đề tương tự.


2
Không dễ để tìm thấy cái này
Gustav

17

Nếu bạn đang sử dụng hình ảnh Bitnami, hãy đăng nhập với tên 'bitnami'.

Có vẻ rõ ràng, nhưng một cái gì đó tôi bỏ qua.


Câu trả lời của bạn đã cứu ngày của tôi!
Surya

2
Ý bạn là? Seems <sarcasm>obvious</sarcasm>
Bob Stein

Hướng dẫn Bitnami , bao gồm cả cách tìm mật khẩu cơ sở dữ liệu.
Bob Stein

8

Đối với hình ảnh ubfox của tôi, nó thực sự là người dùng Ubuntu và KHÔNG phải là người dùng ec2;)


5

Ubuntu 10.04 với openSSH

đây là cách sử dụng chính xác:

ssh -v -i [yourkeypairfile] ec2-user@[yourdnsaddress]

ví dụ:

ssh -v -i GSG_Keypair.pem ec2-user@ec2-184-72-204-112.compute-1.amazonaws.com

ví dụ trên được lấy trực tiếp từ hướng dẫn AWS để kết nối với máy Linux / UNIX tại: http://docs.amazonwebservice.com/AWSEC2/latest/GettingStartedGuide/


Với ssh -i switch, chúng tôi chỉ có thể sử dụng tệp .pem.
ABHAY JOHRI

5

Nó cũng sẽ khiếu nại nếu quyền truy cập tệp pem quá mở. chmod tập tin đến 600 để sửa nó.


Cảm ơn vì mẹo này - đã giúp tôi rất nhiều
Billy Moon

4
Đối với người mới .. lệnh để thực hiện việc này sẽ là:chmod 600 your_file.pem
dano

5

Tôi cũng đang chạy vào đây - hóa ra tôi đang sử dụng một AMI do cộng đồng tạo ra - và tên người dùng mặc định là root không phải là người dùng, cũng không phải là người dùng hay ubfox. Trên thực tế, tôi không biết nó là gì - cho đến khi tôi thử ' root ' và máy chủ vui lòng yêu cầu tôi đăng nhập là xxx trong đó xxx là bất cứ điều gì nó nói với bạn.

-những người yêu!


4

Bạn cần có khóa riêng trong máy cục bộ của mình

Bạn cần biết địa chỉ IP hoặc tên DNS của máy hoặc máy chủ từ xa, bạn có thể lấy địa chỉ này từ bảng điều khiển AWS

Nếu bạn là người dùng linux

  • Đảm bảo rằng các quyền trên khóa riêng là 600 ( chmod 600 <path to private key file>)
  • Kết nối với máy của bạn bằng ssh ( ssh -i <path to private key file> <user>@<IP address or DNS name of remote server>)

Nếu bạn là người dùng windows

  • Sử dụng PuTTy để tạo phiên ssh ( http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.66-installer.exe )
  • Nếu tệp khóa riêng của bạn ở định dạng .pem, hãy chuyển đổi nó thành .ppk bằng puttygen
  • Khởi chạy PuTTy, đặt cho bạn tệp ppk, địa chỉ IP hoặc tên DNS của máy chủ từ xa và bắt đầu phiên ssh

Thay đổi quyền của tệp bằng chmod 400 <pem key>
Vaibhav Jain

3

sử dụng...

# chmod 400 ec2-keypair.pem

không sử dụng quyền 600 nếu không bạn có thể ghi đè khóa của bạn một cách vô tình.


2

điều này làm việc cho tôi:

ssh-keygen -R <server_IP>

để xóa các khóa cũ được lưu trữ trên máy trạm cũng hoạt động với thay vì

sau đó làm cùng một ssh một lần nữa nó hoạt động:

ssh -v -i <your_pem_file> ubuntu@<server_IP>

trên các phiên bản ubfox tên người dùng là: ubfox trên Amazon Linux AMI tên người dùng là: ec2-user

Tôi đã không phải tạo lại ví dụ từ một hình ảnh.



2

Có 2 bước để được kết nối:

Chmod 400 trên khóa riêng của bạn, như thế này những người khác không thể truy cập vào khóa của bạn:

chmod 400 toto.pem

Để kết nối với cá thể của bạn trong SSH, bạn cần biết địa chỉ IP công khai của cá thể của bạn:

ssh -i toto.pem ec2-user@XX.XX.XX.XXX

Hy vọng nó giúp !


1

Nếu bạn đang sử dụng EBS, bạn cũng có thể thử gắn Khối lượng EBS trên một phiên bản đang chạy. Sau đó gắn nó vào ví dụ đang chạy đó và xem những gì đang diễn ra trong / nhà. Bạn có thể thấy những thứ như người dùng ubfox hay ec2-user? hoặc nó có các khóa công khai đúng trong ~ / .ssh / ủy quyền


1

Giấy phép cho ec2-keypair.pemnên400

chmod 400 ec2-keypair.pem


1

Nếu bạn đang chạy hình ảnh AWS từ Bitnami. Tên người dùng sẽ là bitnami. Chúc mừng!

xem gỡ lỗi của tôi và nhìn vào cái cuối cùng:

*

ssh -v -i awsliferaysrta.pem.txt root@54.254.250.***
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 54.254.250.*** [54.254.250.***] port 22.
debug1: Connection established.
debug1: identity file awsliferaysrta.pem.txt type -1
debug1: identity file awsliferaysrta.pem.txt-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 05:5c:78:45:c9:39:3a:84:fe:f8:19:5d:31:48:aa:5f
debug1: Host '54.254.250.***' is known and matches the RSA host key.
debug1: Found key in /Users/macbookpro/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: awsliferaysrta.pem.txt
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 54.254.250.*** ([54.254.250.***]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Remote: Port forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Forced command.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Please login as the user "bitnami" rather than the user "root".

*


1

Trong trường hợp của tôi (Mac OS X), vấn đề là loại ngắt tệp. Thử cái này:

1.- Mở tệp .pem bằng TextWrangler

2.- Ở cuối ứng dụng, xác minh xem Break Type có phải là "Windows (CRLF)" hay không.


1

Người dùng ec2 của nó cho hình ảnh Amazon Linux AMI và ubfox cho Ubuntu. Ngoài ra, RHEL 6.4 và sau này là ec2-user RHEL 6.3 và gốc trước đó là Fedos ec2-user Centos root


0

Chỉ cần thêm vào danh sách này. Tôi đã gặp sự cố sáng nay với một người dùng mới vừa được thêm vào một phiên bản AWS EC2. Để cắt theo đuổi, vấn đề là selinux (đang thi hành chế độ ), cùng với thực tế là thư mục nhà người dùng của tôi nằm trên một khối lượng đính kèm EBS mới. Bằng cách nào đó tôi đoán selinux không thích khối lượng khác. Mất một lúc để tìm hiểu, khi tôi xem qua tất cả các vấn đề ssh thông thường khác (/ etc / ssh / sshd_config vẫn ổn, tất nhiên không cho phép mật khẩu, quyền là đúng, v.v.)

Cách khắc phục?

Cho đến bây giờ (cho đến khi tôi hiểu làm thế nào để cho phép người dùng ssh đến một âm lượng khác, hoặc bằng cách nào đó làm cho âm lượng đó trở thành một điểm chính của nhà ở)

sudo perl -pi -e 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo setenforce 0

Đó là nó. Bây giờ người dùng mới của tôi có thể đăng nhập, sử dụng khóa id_rsa của riêng anh ấy.


0

Có cùng một vấn đề. Quyền bị từ chối (khóa công khai) khi cố gắng đăng nhập bằng 'ec2-user' hoặc bằng 'root'.

Đã lấy số AMI của hình ảnh máy và nó có thông tin đăng nhập SSH ngay trên trang wiki Debian.

Hi vọng điêu nay co ich.

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.