ssh 액세스 권한을 부여하려는 Digital Ocean 드롭 릿이 있습니다. 이전에 무엇을했는지 확실하지 않습니다. Digital Ocean UI를 통해 공개 키를 추가하려고했습니다. 그것은 작동하지 않았다, 나는 계속 받고있다 permission denied (publickey)
.
Digital ocean console을 통해 서버에 액세스하여 공개 키를 수동으로 추가했습니다 /root/.ssh/authorized_keys
. 그런 다음을 사용하여 ssh하려고했습니다 ssh root@x.x.x.x
. 작동하지 않습니다 (권한이 거부되었습니다).
그래서 새 사용자를 추가하려고 시도 하고 디렉토리 자체 및 파일 에 대한 /home/me/.ssh
권한 700
으로 디렉토리를 작성했습니다 . 그런 다음 시도했습니다 . 그것은 작동하지 않았다..ssh
600
authorized_keys
ssh me@x.x.x.x
ssh 데몬을 다시 시작해도 아무것도 변경되지 않습니다.
내가 무엇을 놓치고 있습니까?
편집하다:
자세한 ssh 출력은 다음과 같습니다.
https://gist.github.com/jaesung2061/a37cfd68308414cede8abf7f0137daa9
편집 2 :
LogLevel DEBUG3
산출:
답변
클라이언트 구성
설정 ~/.ssh/config
호스트 항목을 설정하는 ssh
것은 정말 쉽고 많은 문제를 줄여줍니다. 예를 들면 다음과 같습니다.
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
예, 우리는 설정에서 digitaloceanbox
와 github
그리고 github.com
우리는 다음과 같은 명령을 할 수있는 :
ssh github
ssh digitaloceanbox
구성 파일에 지정된 것과 다른 사용자로 로그인 user@
하려면 시작 부분에 넣으 십시오.
ssh user@digitaloceanbox
ssh
키 생성
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
메시지가 표시되면 생성하려는 개인 키의 전체 경로를 지정했습니다 ssh-keygen
. 또한 -C
원격 컴퓨터에서 키를 쉽게 식별 할 수 있는 주석 ( )을 정의했습니다 .
두 개의 파일이 생성됩니다 :
.ssh/digitalocean-rsa
- 개인 키. 이것을 공유하지 마십시오 .
.ssh/digitalocean-rsa.pub
- 공개 키. 이것은 인증하기 위해 서버에 저장하는 것입니다.
ssh
키 를 제공 할 때 .pub
버전 인지 확인하십시오 !! 에 ~/.ssh/config
추가 할 때 시스템에 추가 한 공개 키와 일치하는 올바른 개인 키를 추가하십시오.
서버 구성
대부분의 설치에는 공개 키 인증이 사용됩니다. 그러나 모든 일을 시작하면, 몇 가지 문제가 발생할 수 있습니다. OP가 문제가있는 곳에서 OP는 /root/.ssh/
다시 시작할 디렉토리를 삭제하는 것이 좋습니다 .
ssh
원격 시스템의 루트 사용자에 액세스하는 데 사용하지 않는 것이 좋습니다 . ssh
다른 사용자에게 로그인 한 다음 비밀번호 ( sudo su -
)를 사용하여 루트로 이관하는 것이 좋습니다 .
를 사용하여 호스트에 키 추가 ssh-copy-id
다른 사용자를 작성 ssh
하여 해당 사용자 또는 루트 사용자로 사용하기 로 결정했는지에 관계없이 다음은 ssh
서버에 키를 배치하는 권장 방법입니다 .
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
이를 통해 sshd
필요한 권한으로 필요한 디렉토리와 파일을 만들 수 있습니다 . 따라서 권한을 엉망으로 만들거나 세부 정보를 기억할 필요가 없습니다. 도구를 사용하여 키를 업로드하십시오.
비밀번호 인증 비활성화
즉, 키를 입력하고 키를 사용하여 연결할 수 있는지 확인한 후에는 비밀번호 인증을 비활성화 sshd
하고 서비스를 다시 시작하는 것이 좋습니다 .
- 편집하다
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
신규 사용자는 어떻습니까?
암호 인증을 비활성화하면 새로운 사용자를 어떻게 키울 수 있습니까? 한 가지 방법은 템플릿 파일을 /etc/skel
디렉토리 에 추가하는 것 입니다. 한 명의 사용자를 키한 후에는 다음을 수행하십시오.
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
/etc/skel/.ssh/
새로 작성된 모든 사용자에 대해 자동으로 키를 입력하지 않는 한 파일을 비워 두도록 파일을 편집하십시오 .
로 새 사용자를 만들면 sudo useradd -m newuser
해당 사용자는 .ssh/authorized_keys
을 (를) 편집 할 수 있으며 적절한 권한을 갖습니다.
디버깅
sshd
로그 파일을보고 연결이 실패하거나 거부되는 이유를 확인할 수 있습니다 .
sudo tail -f /var/log/auth.log
이 명령을 실행하는 동안 다른 터미널을 사용하여 로그인을 시도하십시오. 여러 번 제공된 메시지는 문제를 정확히 찾아 내거나 온라인에서 해결책을 찾을 수있을 정도로 충분합니다.
답변
Ssh는 ssh 키를 사용한 소유권, 파일 및 디렉토리 권한에 대해 상당히 까다 롭습니다.
~ / .ssh /는 소유자가 소유해야하며 700 개의 권한이 있어야합니다. ~ / .ssh / authorized_keys는 소유자가 소유해야하며 600 개의 권한이 있어야합니다.
따라서 루트의 경우 :
sudo chown root:root -R /root/.ssh/
sudo chmod 700 /root/.ssh/
sudo chmod 600 /root/.ssh/authorized_keys
사용자 나를 위해 :
sudo chown me:me -R /home/me/
sudo chmod 700 /home/me/.ssh/
sudo chmod 600 /home/me/.ssh/authorized_keys
그런 다음 다시 시도하십시오.
물론 / etc / ssh / sshd_config에서 root가 전혀 로그인 할 수 있는지 또는 ssh 키로 로그인 할 수 있는지 확인해야합니다.
당신이 가지고 있다면 :
PasswordAuthentication no
그런 다음 설정할 수 있습니다 :
PermitRootLogin yes
그런 다음 sshd를 다시 시작하십시오.
/etc/init.d/sshd restart
다시 시도하십시오.
ssh를 사용하면이를 위해 ssh 세션을 사용할 때도 sshd 데몬을 다시 시작할 수 있습니다 .Openssh는이를 처리하도록 설계되었습니다.
업로드 한 로그 파일 스 니펫을 보면 MacOSX를 사용하고있는 것 같습니다. 거기에 새로운 ssh 키를 만들 수 있습니까?
또한 과거에 로컬 컴퓨터에 사용자 용 개인 ssh 키가 둘 이상있을 때 ssh로 원격으로 로그인 할 수없는 경우가 있음을 알게되었습니다. 이 문제를 해결하기 위해 ~ / .ssh / config 파일의 로컬 컴퓨터에 항목을 만드는 데 큰 도움이되었습니다. 예를 들면 다음과 같습니다.
Host my-vps
HostName my-vps-ip-address-here
IdentityFile ~/.ssh/id_rsa-my-private-key-location
User my-username-here
그런 다음 로컬 컴퓨터의 명령 줄에서 시도하십시오.
ssh -v my-vps
ssh 키를 사용하고 일부 다른 로그인에 ssh 키를 사용하지 않는 경우 ssh 키가있는 항목 외에도 ~ / ssh / config 파일에서 ssh 키를 사용하지 않는 ssh 로그인을 정의 할 수 있습니다.
Host pi
Hostname 192.168.1.111
Port 22
User pi
PasswordAuthentication yes
PreferredAuthentications password
이것은 나를 위해 잘 작동합니다. 명령 행에서 사용할 키를 정의 할 수도 있습니다.
ssh -v root@10.111.111.254 -i .ssh/id_rsa
이렇게하면 디버깅이 쉬워 질 수 있으며 명령 줄에서는 항상 로컬 컴퓨터에서 작동해야합니다.
답변
ssh 데몬 구성 (에 있어야 함 /etc/ssh/sshd_config
)을 다시 확인하고 다음을 확인하십시오.
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
또한 구성 파일을 확인하여 AllowUsers 또는 AllowGroups 가 각각 사용자 및 그룹에 대한 화이트리스트 역할을하도록 설정 되어 있는지 확인하십시오 .
또한 루트 사용자에게 키를 추가하려고합니다. 기본적으로 루트 로그인은 비활성화되어 있어야하지만 PermitRootLogin 필드 를 통해이를 변경할 수도 있습니다 .
답변
연결 한 로그에 따르면 클라이언트 측에서 개인 키 파일을 찾지 못하는 문제가 있다고 생각 합니다.
-
먼저 파일
~/.ssh/id_rsa
이 로컬 컴퓨터에 존재하고 올바른 파일인지 확인하십시오 (더 많은 경우). -
확인
.ssh
폴더 권한을 (해야drwx------
실행하지 않을 경우sudo chmod 700 ~/.ssh
) 및 내용 (수 있어야-rw-------
실행하지 않을 경우sudo chmod 600 ~/.ssh/*
) . 원격 시스템에도 동일한 권한을 적용하십시오.
또한 원하는 개인 키를 사용하여 강제로 시도 ssh
하여 -i
매개 변수 와 함께 직접 제공 할 수 있습니다 .
-
다음과 같은 것을 실행할 수 있습니다.
ssh -i /path/to/your/private-key root@X.X.X.X
또는
ssh -i ~/.ssh/id_rsa myRemoteUser@X.X.X.X
ssh 맨 페이지 ( man ssh
터미널에서 실행) 에 대한 자세한 정보를 얻을 수 있습니다 .
또한 root
사용자 로 로그인하려는 경우 , 로그인하기 전에 루트 계정을 활성화해야하며이를 통해 암호를 생성 sudo passwd root
하거나 서버 관리 도구를 사용해야합니다 (Ubutntu는 기본적으로 루트 계정이 비활성화되어 있음) . Ubuntu Wiki 에서 자세한 정보를 얻을 수 있습니다 .
도움이 되길 바랍니다.
답변
다시 설치 openssh-server
하여 문제를 해결했습니다. 주어진 솔루션은 모두 훌륭하지만 나에게는 효과가 없었습니다. 무엇이 문제의 원인인지 전혀 몰랐지만 이전 개발자가 구성을 엉망으로 만들었을 것입니다.
내 것과 같은 특정 문제가있는 사람이있을 것 같지 않습니다. 그러나 Digital Ocean 드롭 릿이 있고 SSH 액세스가 불가능하고 제공된 솔루션이 작동하지 않으면 Digital Ocean 콘솔을 통해 이러한 명령을 실행하여 SSH 서버를 다시 설치하십시오. 이는 파괴적인 과정이므로/etc/ssh/
.ssh
디렉토리가 아닌 기존 구성 파일이 지워 집니다.
apt-get purge openssh-server
apt-get autoremove
apt-get autoclean
apt-get install openssh-server
ssh 클라이언트 / 키가 순서대로 있다고 가정하면 서버에 SSH로 연결할 수 있어야합니다.
답변
이 문제는 Digital Ocean에서 데비안 이미지를 사용하여 나에게 나타났습니다. 어쨌든 간단한 설정 과정에서 루트 암호를 설정했을 때의 소유자 /root
가 user로 변경되었습니다 debian
. 나는 다음을 보았다 /var/log/auth.log
:
Jul 26 20:58:17 docker sshd[12576]: Authentication refused: bad ownership or modes for directory /root
단순히 실행 chown root:root -R /root
하면 문제가 해결되었습니다.
HTH
답변
매우 비슷한 문제가있었습니다. 이것은 나를 위해 일했다- / etc / ssh / sshd_config 에이 줄을 추가하십시오
AuthorizedKeysFile %h/.ssh/authorized_keys
그런 다음 일반적인 방법으로 ssh를 다시 시작하십시오.