Putty : 서버 가져 오기에서 키 오류를 거부했습니다.
puttygen.exe
(클라이언트는 Windows 8)을 사용하여 키 쌍을 만들었습니다 . 서버 (Ubuntu 12.04.3 LTS)에서 공개 키를 ~/.ssh/authorized_keys
. 공개 키는 다음과 같습니다.
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAopfM6RHOgnuc4Aftn3t4k5UIAT3StCAbn/vg/IMbphbXadshC+79sIlRq3P4zGzMjFTP4hKnzu6ehLV5lmj/qorq3SKT+bPO5Qrac3VbIlrGvuBFDDjP82I2Hwg3HzlsFTstqk++KToapaTYZ7jENEYyPl2wnzITJnt//+4U1o6juoXTKgdNE02hHnRZyHOV/bnkZyJJCEwJv5U0eXSThQnhmXtUxGT8U0HQNFiXfqIIVllhWiCnyrhhIaKz/CIJNAd2VmzyJzQtJtTQX8aWSNVrZju6Sv2/RncTNvsACdNgjjh/FH8PQXaep00jlJ3MOdsC8vz6VSPFbh6iKy1oLQ== rsa-key-20131231
따라서 정확합니다 (한 줄, 주석 없음, ssh-rsa 등으로 시작)
.ssh
dir 권한 수준은 700이고 authorized_keys 파일 권한은 600입니다. 로그인을 시도하는 실제 사용자가 소유 한 디렉터리와 파일입니다.
연결을 시도하면 'server refused our key'
서버에서 암호를 요청합니다. 그게 다야. /var/log/auth.log
키로 로그인을 시도 할 때 아무것도 기록되지 않습니다 .
나는 모든 곳을 보았고 모든 기사와 팁은 파일 / 디렉토리에 대해 chmod 600 및 700을 설정하고 키를 올바르게 형식화하는 것에 대해 언급합니다. 나는이 모든 것을 여전히 '우리의 열쇠를 거부했습니다.'오류가 발생하고 아이디어가 없습니다.
좋아요, 내 키에 작은 오타가 있습니다. 파일에 붙여 넣을 때 첫 번째 문자가 잘리고 ssh-rsa 대신 sh-rsa로 시작했습니다.
nrathathaus-귀하의 답변은 매우 도움이되었습니다. 감사합니다.이 답변은 귀하에게 감사드립니다. :) 나는 당신이 말한 것처럼 sshd_conf에 설정했습니다.
LogLevel DEBUG3
로그를 보면 sshd가 키를 올바르게 읽지 만 잘못된 식별자로 인해 거부한다는 것을 깨달았습니다.
다른 답변으로 몇 가지 생각을 추가하면 도움이되었지만 정확히 맞지 않았습니다.
먼저 수락 된 답변에서 언급했듯이
/etc/ssh/sshd_config
로그 수준을 설정합니다.
LogLevel DEBUG3
그런 다음 인증을 시도하고 실패하면 로그 파일을 찾으십시오.
/var/log/secure
찾고있는 오류가 있습니다.
제 경우에는 / home / user의 권한도 0755에서 0700으로 변경해야했습니다.
제 경우에는 권한 문제입니다.
로그 수준을로 변경 DEBUG3
했는데 /var/log/secure
다음 줄이 표시됩니다.
Authentication refused: bad ownership or modes for directory
Googled와이 게시물을 찾았습니다.
https://www.daveperrett.com/articles/2010/09/14/ssh-authentication-refused/
chmod g-w /home/your_user chmod 700 /home/your_user/.ssh chmod 600 /home/your_user/.ssh/authorized_keys
기본적으로 다음과 같이 알려줍니다.
w
사용자 홈 디렉토리 의 그룹 권한 제거- 로 변경 권한
700
의.ssh
디렉토리 - 파일
600
의 권한을 변경authorized_keys
하십시오.
그리고 그것은 작동합니다.
또 다른 것은 루트 로그인을 활성화해도 root
작업을 할 수 없다는 것입니다. 다른 사용자를 사용하는 것이 좋습니다.
나는 성공하지 않고 인터넷을 수색하는 데 시간을 보냈던 나와 같은 모든 사람을 돕기 위해이 답변을 추가하고 있습니다.
홈 폴더가 암호화 될 수 있습니다.
또는 "authorized_keys"파일이 중첩 된 폴더입니다. 저에게 많은 시간을 절약 할 수 있었을 것입니다. 확인하려면 수행하십시오
ls -A
암호화 상태를 확인하려는 디렉토리에 있습니다. 폴더에 ".encryptfs"라는 폴더가 포함되어 있으면 해당 폴더가 암호화됩니다. 이로 인해 확인에 필요한 공개 ssh 키가 포함 된 "authorized_keys"파일에 액세스 할 수 없습니다.
이 문제를 해결하려면 암호화가없는 디렉터리 트리에 "authorized_key"파일을 배치합니다.
내가 찾은 간단한 해결책 authorized_keys
은 숨겨진 .ssh 디렉토리에서 파일 을 옮기고 시스템 ssh 디렉토리에 넣는 것입니다.
/etc/ssh/keys/authorized_keys
이 작업을 수행하자마자 문제없이 작동했습니다.
Windows Server 2008 r2에서 동일한 문제가 발생하고 해결하기 위해 많은 것을 탐색 한 후 마침내 다음과 같이 해결했습니다.
텍스트 패드 또는 다른 텍스트 편집기로 C : \ Program Files (x86) \ OpenSSH \ etc \ sshd_config를 엽니 다.
다음 줄에서 주석을 제거하면 다음과 같이 표시됩니다.
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
그것을 저장하고 지금 개인 키로 로그인하십시오. 즐기세요.
nrathaus 덕분 /var/log/auth.log
에 디버그 수준에 대한 조사는 다음과 같습니다.
또 다른 이유는 홈 디렉토리가 755와 다른 권한을 가질 수 있기 때문입니다.
오늘이 문제가 발생했고 파일에서 공개 키를 복사 할 때 새 줄 문자도 포함된다는 문제가있었습니다. vim에서 ": set list"를 사용하여 숨겨진 새 줄을 모두보고 마지막 줄을 제외한 모든 새 줄을 삭제할 수 있습니다. 또한 내 키는 처음에 "ssh-rsa"가 누락되었습니다. 그것도 가지고 있는지 확인하십시오.
Windows 8.1을 실행하면 server refused our key
문제가 발생했습니다.
가이드에 따라 : https://winscp.net/eng/docs/guide_windows_openssh_server Windows 로그인 username
및 password
. 그러나, 인증하는 username
A의 결합에 private key
응답 하였다 server refused our key
.
공개 키와 함께 작동하도록하는 것은 파일에 대한 권한으로 내려졌습니다 . C:\ProgramData\ssh\administrators_authorized_keys
이것은 유용한 페이지입니다 : https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooting-Steps
다음을 열고, 두 OpenSSH의 서비스를 중지 command prompt
와 함께 admin permissions
. 그런 다음 다음을 실행하십시오.C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd
참고 : 그렇지 않으면 sshd
불평 하는 exe의 전체 경로를 지정하십시오 . 이렇게하면 일회성 연결 리스너가 생성됩니다. 은 -ddd
레벨 3 장황.
연결 후 로그를 스캔하면 다음과 같은 내용이 표시됩니다.
debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
debug3: Failed to open file:C:/ProgramData/ssh/administrators_authorized_keys error:2
debug1: Could not open authorized keys '__PROGRAMDATA__/ssh/administrators_authorized_keys':
No such file or directory
파일을 만들어야했습니다. 텍스트를 여기에 C:\ProgramData\ssh\administrators_authorized_keys
복사합니다 public key
. 예 : ssh-rsa AAAA................MmpfXUCj rsa-key-20190505
그런 다음 파일을 저장합니다. 나는으로 파일을 저장 UTF-8
와 BOM
. 테스트하지 않았습니다 ANSI
.
그런 다음 일회성 명령 줄을 다시 실행하면 로그에 다음과 같이 표시됩니다.
debug1: trying public key file __PROGRAMDATA__/ssh/administrators_authorized_keys
debug3: Bad permissions. Try removing permissions for user: S-1-5-11 on file C:/ProgramData/ssh/administrators_authorized_keys.
Authentication refused.
S-1-5-11
에 주어진 이름 System
입니다.
을 수정하려면 파일을 Bad permissions
마우스 오른쪽 버튼으로 클릭하고으로 이동 한 다음 버튼을 클릭하고 상속 된 권한을 제거합니다. 그런 다음 모두 삭제 Windows 로그인 이름을 제외하고, 예를 들면 : 그에 대한 권한이 있어야합니다 , 다른 모든 선택하지 않은 것입니다. 파일의 소유자도administrators_authorized_keys
Security Tab
Advanced
Group or user names:
YourMachineName\username
username
Read Allow
Write Deny
YourMachineName\username
이것은 문제를 해결했습니다.
기타 유용한 링크 :
https://github.com/PowerShell/Win32-OpenSSH/releases 에서 OpenSSH-Win32.zip을 다운로드합니다.
WinSCPnet.dll을 사용하여 OpenSSH 서버에 연결하는 방법에 대한 C # 예제 : https://winscp.net/eng/docs/library#csharp
다음은 다음을 사용하여 연결하는 코드 스 니펫입니다 WinSCPnet.dll
.
static void WinSCPTest() {
SessionOptions ops = new SessionOptions {
Protocol = Protocol.Sftp,
PortNumber = 22,
HostName = "192.168.1.188",
UserName = "user123",
//Password = "Password1",
SshHostKeyFingerprint = @"ssh-rsa 2048 qu0f........................ddowUUXA="
};
ops.SshPrivateKeyPath = @"C:\temp\rsa-key-20190505.ppk";
using (Session session = new Session()) {
session.Open(ops);
MessageBox.Show("success");
}
}
교체 SshHostKeyFingerprint
및 SshPrivateKeyPath
자신의 값.
편집 : administrators_authorized_keys 파일 권한의 스크린 샷 추가 :
때 OpenSSH SSH Server
서비스로 실행되고, 만 System
있는 권한이 있어야합니다. 그러나 sshd.exe
명령 프롬프트에서 실행하는 경우 현재 사용자 만 나열되어야합니다 (읽기 허용, 쓰기 거부).
Windows Server에서이 오류를 수신하는 사람들에게 동일한 오류가 발생했으며 이는 사용자 계정 문제였습니다. 많은 조직에서 관리자를위한 그룹 정책은 SSH 서버 및 연결 설정을 허용하지 않을 수 있습니다. 이러한 유형의 설정에서는 로컬 관리자 계정에서 수행해야합니다. 공개 키에 오타가 없음을 확인한 경우 살펴볼 가치가 있습니다.
제 경우에는 Centos6.6에서 SELinux를 비활성화해야 작동합니다. :)
/ etc / selinux / config를 편집하고 다음을 설정 한 후 호스트를 재부팅하십시오.
selinux=disabled
BTW ... 문제를 식별하기 위해 LogLevel = DEBUG3을 설정해야한다는 것을 언급하는 것을 잊었습니다.
solaris에서 동일한 오류가 발생했지만 /var/adm/splunk-auth.log에서 다음을 발견했습니다.
sshd: [auth.debug] debug1: PAM conv function returns PAM_SUCCESS
sshd: [auth.notice] Excessive (3) login failures for weblogic: locking account.
sshd: [auth.debug] ldap pam_sm_authenticate(sshd-kbdint weblogic), flags = 1
sshd: [auth.info] Keyboard-interactive (PAM) userauth failed[9] while authenticating: Authentication failed
/ etc / shadow에서 계정이 잠겼습니다.
weblogic:*LK*UP:16447::::::3
"* LK *"부분 제거 :
weblogic:UP:16447::::::3
평소와 같이 authorized_keys와 함께 ssh를 사용할 수 있습니다.
제 경우에는 ( /etc/ssh/sshd_config
) :
PermitRootLogin no
로 변경 yes
하고 서비스를 다시 시작한 후 정상적으로 들어 왔습니다.
이 문제를 해결했습니다 .puttygen은 타사 소프트웨어로 생성 된 ssh 키는 직접 사용하지 않았으므로 변경해야합니다. 예를 들어 다음과 같습니다.
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20170502"
AAAAB3NzaC1yc2EAAAABJQAAAQEAr4Ffd3LD1pa7KVSBDU+lq0M7vNvLp6TewkP7
*******C4eq1cdJACBPyjqUCoz00r+LqkGA6sIFGooeVuUXTOxbYULuNQ==
---- END SSH2 PUBLIC KEY ----
중간에있는 알파벳 중 일부를 생략하고 *로 대체합니다. 그렇지 않은 경우 StackOverflow에서 코드 형식이 잘못되었다고 알려주었습니다. 게시하지 마십시오。
이것은 puttygen에 의해 생성 된 내 ssh 키입니다.
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAr4Ffd3LD1pa7KVSBDU+lq0M7vNvLp6TewkP7wfvKGWWR7wxA8GEXJsM01FQw5hYWbNF0CDI7nCMXDUEDOzO1xKtNoaidlLA0qGl67bHaF5t+0mE+dZBGqK7jG9L8/KU/b66/tuZnqFqBjLkT+lS8MDo1okJOScuLSilk9oT5ZiqxsD24sdEcUE62S8Qwu7roVEAWU3hHNpnMK+1szlPBCVpbjcQTdiv1MjsOHJXY2PWx6DAIBii+/N+IdGzoFdhq+Yo/RGWdr1Zw/LSwqKDq1SmrpToW9uWVdAxeC4eq1cdJACBPyjqUCoz00r+LqkGA6sIFGooeVuUXTOxbYULuNQ== yourname@hostname
제 경우에는 다음과 같은 일부 댓글을 삭제했습니다.
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20170502"
---- END SSH2 PUBLIC KEY ----
및 추가 ssh-rsa
시작 부분에 추가, yourname@hostname
마지막에. 참고 : ==
마지막에 삭제하지 말고 "yourname"및 "hostname"을 변경해야합니다. 제 경우에는 uaskh@mycomputer
, yourname은 vps에 로그인하려는 것입니다.이 모든 작업이 완료되면 공개 업로드 할 수 있습니다. -key uaskh의 가정에 ~/.ssh/authorized_keys
의하여 cat public-key >> ~/.ssh/authorized_keys
다음은 sudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys
다음은 수정하려면해야 / 등 / SSH / sshd_config를 RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
내 운영 체제가 CentOS는 7,이 anwser 질문에 대한 내 첫 번째 시간입니다, 내가 할 수있는 내 노력을 다할 것입니다, 감사합니다!
psftp와 함께 PUTTYgen 파일을 사용하고 있는데 클라이언트에 대한 새 키를 만들어야 할 때 Windows Server에서이 문제가 발생했습니다. private_key_name의 .ppk 파일과 open_ssh.txt 파일 작업에 대한 연결에 대해 동일한 디렉토리에 있어야합니다.
제 경우에는 nfs의 집이 777이었고 750이 필요했습니다.이 문제가 해결되었습니다.
sshd가 authorized_keys2
.
파일을 복사하거나 이름을 바꾸면 문제가 해결되었습니다.
cd ~/.ssh
sudo cat authorized_keys >> authorized_keys2
추신 : Windows에서 Putty를 사용하고 있으며 키 쌍 생성에 PuTTyKeygen을 사용했습니다.
Mobaxterm을 통해 로그온하려고 할 때 비슷한 문제가 발생했습니다. 개인 키는 puttygen을 통해 생성되었습니다. 제 경우에는 키를 다시 생성하는 것이 도움이되었습니다.
Cpanel을 사용할 때 키가 인증되었는지 확인할 수 있습니다.
SSH 액세스 >> 공개 키 >> 관리 >> 승인 또는 승인 취소.
이 오류가 발생하면 /var/log/secure
오류 : key_read : key_from_blob AA
AAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG + rKz93l7em1BsUBzjHPMsswD
.ppk
파일 을 볼 때 puttgen을 통해 키를 생성하면 키에 공간이 있음을 의미합니다 .
AAAAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswD
al74MLaJyhQD0pE23NS1izahbo1sJGnSJu2VJ//zxidSsba6xa6OvmeiKTwCz0E5
GMefdGVdpdbTlv99qjBl1+Nw1tDnHIC0+v9XmeZERQfCds9Kp1UivfReoYImntBC
gLtNyqRYrSu8csJCt7E1oY8QK6WP1vfYgAQ2taGyS9+g7FHyyf5VY2vH3oWzzbqz
xjsSLAv3zEQSm1LzSw9Pvc8iwasFyUMBOPj31CKQYTXyX8KpJTr0Zb7oqMauBE5L
VwxZhlcJHbj0FsMbF/+GRjvgexymCi3bHmwGQ6FEADNd0RkhdQ==
그리고 붙여 넣으려고하면 키 읽기 오류가 발생하므로 키를 편집하고 한 줄로 만들어서 시도해보십시오.
이것은 뭔가처럼 보일 것입니다
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswDal74MLaJyhQD0pE23NS1izahbo1sJGnSJu2VJ//zxidSsba6xa6OvmeiKTwCz0E5GMefdGVdpdbTlv99qjBl1+Nw1tDnHIC0+v9XmeZERQfCds9Kp1UivfReoYImntBCgLtNyqRYrSu8csJCt7E1oY8QK6WP1vfYgAQ2taGyS9+g7FHyyf5VY2vH3oWzzbqzxjsSLAv3zEQSm1LzSw9Pvc8iwasFyUMBOPj31CKQYTXyX8KpJTr0Zb7oqMauBE5LVwxZhlcJHbj0FsMbF/+GRjvgexymCi3bHmwGQ6FEADNd0RkhdQ== username@domainname
나를 위해 작동하는 것은 다음과 같습니다.
- ec2 인스턴스를 중지했습니다.
- 볼륨 분리
- 동일한 키를 사용하여 이전 인스턴스에 볼륨을 연결하고 SSH를 수행 할 수있었습니다.
- 일부 임시 폴더에 볼륨 마운트
- mount_point / home / ec2-user / .ssh / authorized_keys 디렉토리에서 파일을 확인했습니다.
- 이상적으로는이 파일에 주요 정보가 있어야하지만이 파일은 비어 있습니다.
- copied the old instance authorized_keys file to the newly mounted volume
- unmount the device
- reattach to the original ec2 instance
- start it and let it pass the health checks
This time it works for me. But I don't know why it doesn't have my key file information at first when the instance was launched. Check this link too https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm
On my case the problem was like this, during the generation of ssh keys I intentionally changed the default directories of the keys. So instead of using the location ~/.ssh/authorized_keys I chose to use ~/home/user/folder1/.ssh/authorized_keys
, for these changes to work I was supposed to make the same changes of about the new location on this file /etc/ssh/sshd_config
. But until I am realising this I had already tried several solutions suggested by other people here including setting the permission of home folder to 700
and the .ssh directory to 600
.
Steps to fix Root mount (That i followed as i changed permission with ec2-user folder and the authorization key file) This process will be similar to detach and attach a pen-drive
Below are some other scenarios you may encounter -
- You're using an SSH private key but the corresponding public key is not in the authorized_keys file.
- You don't have permissions for your authorized_keys file.
- You don't have permissions for the .ssh folder.
- Your authorized_keys file or .ssh folder isn't named correctly.
- Your authorized_keys file or .ssh folder was deleted.
Steps to fix them
- Stop the problematic Ec2 instance
- Detach the root volume (/dev/sda1)
- Create an ec2 instance or use an running one
- Mount the detached volume (/dev/sdvf) to new ec2 instance
Now after you login to new ec2 run below steps
- Lsblk command - list all available mounts
- Pick the mount value that you unmount from the problematic instance
- As ec2-user run “sudo mount /dev/mapper/rootvg-home /mnt”
sudo mount /dev/mapper/rootvg-home /mnt
- Then change directory to /mnt
- Make all necessary changes
Now we have fixed our volume with the issue that we faced. Mostly it could be user permission issue - Umount /mnt to unmounts it - Now go to the console and point to the volume attached to new instance and detach it - After detached, attached it to your new volume as /dev/sda1
With that said you should be able to login successfully
As my experience, I suggest you should generate keys from putty, should not generate from linux side. Because the key will be old PEM format. Anyway, just my suggestion. I did as steps below and worked fine with me and with my team.
Generate a key pair with PuTTYGen.exe on your local (type: RSA, length: 2048 bits).
Save private/public key as "id_rsa.ppk/id_rsa.pub" files on your local.
Create "authorized_keys" file on your local, then enter the public key in "id_rsa.pub" to "authorized_keys". Remember content has to begin with "ssh-rsa" and one line only.
- Use WinScp (or putty command) to copy "authorized_keys & id_rsa.pub" from your local to your linux-user-home "/home/$USER/.ssh/".
Run these commands:
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
chown $USER:$USER .ssh -R
Test your connect setting by load the private key "id_rsa.ppk" in the PuTTY.exe profile, then click open (put your passphrase if have).
키를 확인하세요. 오늘은 rsa (id_rsa.pub) 키 여야하며 더 이상 dss (id_dsa.pub) 키가 아니어야합니다. puttygen 0.70을 사용하고 생성 할 키 유형에서 RSA를 선택하고 호스트 ~ /에서 공개 키를 교체합니다. ssh / authorized_keys
키를 추가 한 후 ec2-user
Amazon Linux 시스템을 사용하는 것처럼 로그인 합니다.
또 다른 이유 는 파일의 UTF-8 BOM 일 수 있습니다 authorized_keys
.
참고 URL : https://stackoverflow.com/questions/20864224/putty-getting-server-refused-our-key-error
'programing tip' 카테고리의 다른 글
모델 속성을 사용하는 ModelSerializer (0) | 2020.10.17 |
---|---|
중첩 된 try / except 블록에서 예외를 다시 발생시키는 방법은 무엇입니까? (0) | 2020.10.17 |
Openstreetmap : 웹 페이지에지도 삽입 (예 : Google지도) (0) | 2020.10.17 |
Amazon S3 파일 다운로드 이름 변경 (0) | 2020.10.17 |
Scala에서 암시 적을 어떻게 연결할 수 있습니까? (0) | 2020.10.17 |