Programing

~ / .ssh / authorized_keys에 공개 키를 추가해도 자동으로 로그인되지 않습니다

lottogame 2020. 2. 20. 23:12
반응형

~ / .ssh / authorized_keys에 공개 키를 추가해도 자동으로 로그인되지 않습니다


public ssh 키를 authorized_keys 파일에 추가했습니다. ssh localhost비밀번호를 묻지 않고 로그인해야합니다.

나는 그것을하고 입력을 시도 ssh localhost했지만 여전히 암호를 입력하라는 메시지를 표시합니다. 작동하도록 설정해야 할 다른 설정이 있습니까?

권한 변경에 대한 지시를 따랐습니다.

내가하면 결과는 다음과 같습니다 ssh -v localhost

debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
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 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
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,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>

그런 다음 위의 로그 다음에 통과 단계를 묻습니다. 비밀번호없이 로그인하지 않는 이유는 무엇입니까?


authorized_keys파일 및 파일이있는 폴더 / 부모 폴더 의 권한을 확인해야합니다 .

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

자세한 내용은 이 페이지를 참조 하십시오 .

그룹 및 다른 사용자의 쓰기 권한을 제거하기 위해 홈 디렉토리의 권한을 변경 / 확인해야 할 수도 있습니다.

chmod go-w ~

SELinux는 또한 authorized_keys가 작동하지 않을 수 있습니다. 특히 CentOS 6 및 7의 루트에 대해서는 비활성화 할 필요가 없습니다. 권한이 올바른지 확인하면 다음과 같이 수정할 수 있습니다.

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh

ssh certified_keys 설정 은 간단 해 보이지만 일부 트랩을 숨 깁니다.

-서버-

에서 의 / etc / SSH / sshd_config를 설정할 passwordAuthentication yes수 있도록 동의를 서버 임시 비밀번호 인증

-- 고객 --

cygwin 을 Linux 에뮬레이션으로 간주 하고 openssh를 설치 및 실행하십시오.

1. 개인 및 공개 키 생성 (클라이언트 측)# ssh-keygen

여기서 Enter 키를 누르면 ~ / .ssh /에 DEFAULT 2 파일 " id_rsa "및 " id_rsa.pub "가 표시 되지만 name_for_the_key를 지정 하면 생성 된 파일이 pwd에 저장됩니다

2. 장소 your_key.pub 대상 시스템을ssh-copy-id user_name@host_name

기본 키를 만들지 않은 경우 이것이 잘못되는 첫 번째 단계입니다 ...

ssh-copy-id -i path/to/key_name.pub user_name@host_name

3. 로깅 ssh user_name@host_name은 기본 id_rsa에 대해서만 작동하므로 여기에 필요한 두 번째 트랩이 있습니다.ssh -i path/to/key_name user@host

( ssh -v ... 옵션을 사용 하여 무슨 일이 일어나고 있는지 확인하십시오)

경우 서버가 계속 암호를 묻습니다 당신은 떨어지게했다. 암호입력 하려면 : 키를 만들었을 때 (정상적입니다)

ssh가 청취하지 않는 경우 기본 포트 22를 사용해야합니다. ssh -p port_nr

-서버 -----

4. / etc / ssh / sshd_config수정하십시오.

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

(사례가 아닌 경우)

이것은 ssh에게 authorized_keys를 승인하고 .ssh / authorized_keys 파일로 작성된 key_name 찌르기를 사용자 홈 디렉토리에서 찾도록 지시합니다.

대상 컴퓨터에서 5 개의 권한 설정

chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

패스 인증 끄기

passwordAuthentication no

모든 ssh root / admin /....@ your_domain 시도에 대한 게이트를 닫으려면

6 루트가 아닌 모든 홈 디렉토리의 소유권 및 그룹 소유권이 적절한 지 확인하십시오.

chown -R ~ usernamehere
chgrp -R ~/.ssh/ user 

=================================================

7. 우수 http://www.fail2ban.org를 고려 하십시오

8. 추가 ssh TUNNEL 은 MySQL (바인드 = 127.0.0.1) 서버에 액세스합니다.


또한 다른 사람이 홈 디렉토리를 쓸 수 없는지 확인하십시오

chmod g-w,o-w /home/USERNAME

여기서 대답을 훔쳤다


또한 필자는 혼란스러운 터미널에서 id_rsa.pub 텍스트를 복사하기 때문에 authorized_keys 파일에 추가 줄 바꿈이 없어야 할 수도 있습니다.


.ssh / authorized_keys에 공개 키를 나열해야하지만 sshd (서버)가이를 공개하기에는 충분하지 않습니다. 개인 키가 암호로 보호되어 있으면 매번 ssh (클라이언트)에게 암호를 제공해야합니다. 또는 ssh-agent 또는 그놈과 동등한 것을 사용할 수 있습니다.

UPDATE 추적은 암호로 보호 된 개인 키와 일치합니다. ssh-agent 또는 ssh-keygen -p를 참조하십시오.


모든 권한이 정상인 것처럼 보이더라도 SELinux가이 오류를 유발할 수 있습니다. 비활성화하면 나에게 트릭이되었습니다 (비활성화에 대한 일반적인 면책 조항을 삽입하십시오).


사용자는 사용자 이름입니다

mkdir -p /home/user/.ssh
ssh-keygen -t rsa
touch /home/user/.ssh/authorized_keys
touch /home/user/.ssh/known_hosts
chown -R user:user /home/user/.ssh
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/id*
chmod 644 /home/user/.ssh/id*.pub
chmod 644 /home/user/.ssh/authorized_keys
chmod 644 /home/user/.ssh/known_hosts

나를 위해 트릭을 한 것은 마침내 소유자 / 그룹 이 루트가 아닌 사용자 인지 확인하는 것이 었습니다 .

chown -R ~/.ssh/ user
chgrp -R ~/.ssh/ user 

쓰기 명령 :

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

이 작업을 수행 한 후에는 디렉토리가 다음과 같은지 확인하십시오.

drwx------ 2 lab lab 4.0K Mar 13 08:33 .
drwx------ 8 lab lab 4.0K Mar 13 08:07 ..
-rw------- 1 lab lab  436 Mar 13 08:33 authorized_keys
-rw------- 1 lab lab 1.7K Mar 13 07:35 id_rsa
-rw-r--r-- 1 lab lab  413 Mar 13 07:35 id_rsa.pub

나를 위해 일한 "ssh-add"를 사용해보십시오.


기억해야 할 또 다른 팁. v7.0 이후 OpenSSH 는 상속 취약점으로 인해 기본적으로 DSS / DSA ssh 키를 비활성화합니다 . 따라서 OpenSSH v7.0 +를 사용하는 경우 키가 아닌지 확인하십시오 ssh-dss.

당신이 DSA 키 붙어있는 경우 재 활성화하여 업데이트하여 지원을 로컬로 수 sshd_config~/.ssh/config그래서 같은 라인 파일 :PubkeyAcceptedKeyTypes=+ssh-dss


내 경우에는 authorized_keys파일 을에 넣어야 했습니다 .openssh.

이 위치는 /etc/ssh/sshd_config옵션 아래에 지정되어 있습니다 AuthorizedKeysFile %h/.ssh/authorized_keys.


대상 사용자에게 비밀번호가 설정되어 있는지 확인하십시오. passwd username하나를 설정하려면 실행하십시오 . 비밀번호 SSH 로그인이 비활성화 된 경우에도 필요했습니다.


주의해야 할 또 다른 문제입니다. 생성 된 파일이 기본이 아닌 경우 id_rsaid_rsa.pub

.ssh / config 파일을 작성하고 연결에 사용할 id 파일을 수동으로 정의해야합니다.

예를 들면 다음과 같습니다.

host remote_host_name
hostname 172.xx.xx.xx
user my_user
IdentityFile /home/my_user/.ssh/my_user_custom.pub

내가 발행 sudo chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keyschmod go-w $HOME $HOME/.ssh위에서 그리고 내가 삼바 공유가 작업을 진행하는 동안에 대한 권한을 엉망했다는 CentOS7 상자에 내 문제를 해결했습니다. 감사


권한 문제처럼 보입니다. 일반적으로 일부 파일 / 디렉토리의 권한이 올바르게 설정되지 않은 경우에 발생합니다. 대부분의 경우 그들은있다 ~/.ssh~/.ssh/*. 제 경우에는입니다 /home/xxx.

sshd의 로그 수준을 수정하여 /etc/ssh/sshd_config(search LogLevel,로 설정 DEBUG) 출력을 확인하여 /var/log/auth.log정확히 무슨 일이 있었는지 확인할 수 있습니다.


이것은 내 문제를 해결

ssh 에이전트 배쉬

ssh-add


/ etc / ssh / authorized_keys를 채우는 자동화가 아직 실행되지 않았을 때 문제가 수정 된 AuthorizedKeysFile이었습니다.

$sudo grep AuthorizedKeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile  /etc/ssh/authorized_keys/%u

서버 에서 /var/log/auth.log살펴보십시오 . 서버가 가능한 공격자에게 너무 많은 정보를 제공하지 않기 때문에 클라이언트 쪽에서 -vv 를 사용하여 추가 정보를 설정해도 도움이되지 않습니다.


전체 공개 키를 authorized_keys;에 복사했는지 확인하십시오 . ssh rsa키가 작동 하려면 접두사가 필요합니다.


파일의 속성을 확인해야합니다. 필요한 자산 사용을 할당하려면 :

$ chmod 600 ~/.ssh/sshKey
$ chmod 644 ~/.ssh/sshKey.pub

그 메모에서 sshd 설정에-;

PermitRootLogin without-password

위와 같이 설정 한 다음 sshd (/etc/init.d/sshd restart)를 다시 시작하십시오.

로그 아웃 한 후 다시 로그인하십시오!

내가 믿는 기본은-;

PermitRootLogin no

필자의 경우 사용자 그룹이 구성 파일 / etc / ssh / sshd_config의 AllowGroups에 설정되어 있지 않기 때문입니다. 그것을 추가하면 모든 것이 잘 작동합니다.


비표준 위치에 홈 디렉토리가 있고 sshd로그에 다음 줄이 있습니다.

Could not open authorized keys '/data/home/user1/.ssh/authorized_keys': Permission denied

모든 권한이 괜찮더라도 (다른 답변 참조).

여기에서 해결책을 찾았습니다 : http://arstechnica.com/civis/viewtopic.php?p=25813191&sid=0876f069ec2aa5fdcd691a2e2e7242c2#p25813191

내 특별한 경우 :

  • 에 새 줄을 추가했습니다 /etc/selinux/targeted/contexts/files/file_contexts.homedirs:

    • 다음은 일반 홈 디렉토리의 원래 줄입니다.

      /home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

    • 이것은 내 새로운 라인입니다.

      /data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

  • 뒤에 a restorecon -r /data/sshd재시작


나는이 문제가 있었고 다른 대답은 해결하지 못했지만 물론 다른 대답 정확합니다.

필자의 경우 /root디렉토리 자체 (예 : 아닌 /root/.ssh)에 잘못된 권한이 있음이 밝혀졌습니다 . 내가 필요:

chown root.root /root
chmod 700 /root

물론 이러한 권한은 (어쩌면 chmod 770) 상관없이 비슷해야합니다 . 그러나, 특별히 방지 sshd에도 작동 /root/.ssh하고 /root/.ssh/authorized_keys모두가 올바른 사용 권한 및 소유자를했다.


/var/log/auth.log의 서버에 sshd인증 오류가 발생합니다.

다른 모든 방법이 실패하면 sshd서버를 디버그 모드에서 실행하십시오 .

sudo /usr/sbin/sshd -ddd -p 2200

그런 다음 클라이언트에서 연결하십시오.

ssh user@host -p 2200

내 경우에는 끝에 오류 섹션이 있습니다.

    debug1: userauth_pubkey: test whether pkalg/pkblob are acceptable for RSA SHA256:6bL+waAtghY5BOaY9i+pIX9wHJHvY4r/mOh2YaL9RvQ [preauth]
==> debug2: userauth_pubkey: disabled because of invalid user [preauth]
    debug2: userauth_pubkey: authenticated 0 pkalg ssh-rsa [preauth]
    debug3: userauth_finish: failure partial=0 next methods="publickey,password" [preauth]
    debug3: send packet: type 51 [preauth]
    debug3: receive packet: type 50 [preauth]

이 정보를 사용하여 sshd_config로그인을 ssh그룹 구성원으로 제한하고 있음을 깨달았습니다 . 다음 명령으로이 권한 오류가 수정되었습니다.

sudo usermod -a -G ssh NEW_USER

로그인 사용자 그룹을 다른 사용자에게 추가 할 때이 문제가 발생했습니다. userA라는 ssh-login 사용자와 비 -ssh-login 사용자 userB가 있다고 가정합니다. userA에는 userA 그룹도 있습니다. 그룹 userA도 갖도록 userB를 수정했습니다. 설명 된 동작으로 이어 지므로 userA는 프롬프트없이 로그인 할 수 없습니다. userB에서 userA 그룹을 제거한 후 프롬프트없이 로그인이 다시 작동했습니다.

참고 URL : https://stackoverflow.com/questions/6377009/adding-public-key-to-ssh-authorized-keys-does-not-log-me-in-automatically



반응형