Key 생성
아래 명령어를 통해서 private, public key를 생성한다.
ssh-keygen -t rsa
그냥 엔터치면 기본경로(/$USER$/.ssh/id_rsa)에 저장된다..
key password 생성
기본 경로에 저장하면 아래 key에 대해서 비밀번호 설정이 나오는데 이 때 입력하면 매번 ssh 접속시 비밀번호를 입력해야 함으로 엔터를 치고 넘어간다.(그럼 비밀번호 없이 ssh원격접속 가능함)
Enter file in which to save the key (/root/.ssh/id_rsa): 엔터 입력
Enter passphrase (empty for no passphrase): 엔터 입력
기본 경로에 들어가면 아래와 같이 두개의 키가 생성돼 있는것을 볼 수 있다.
- Id_rsa : 개인키(타인에게 노출되면 안됨)
- Id_rsa.pub : 공개키(외부로 배포할 키)
공개키 등록
이제 접속하고자 하는 서버에 공개키를 등록해야 한다.
ssh-copy-id 배포를 권장한다.
ssh-copy-id -i ~/.ssh/id_rsa.pub -p {PORT_NUMBER} [user]@[Remote_Host]
이 후 서버의 ssh 비밀번호를 입력하면 끝난다.
키를 등록했는데도 비밀번호 입력을 요구하는 경우
1. 공개키가 일치하는지 확인
먼저 나의 공개키가 접속하고자 하는 PC에 공개키가 등록되었는지 확인해야 한다.
Target PC에서 아래 명령어로 키값이 들어와있는지 확인한다.
cat ~/.ssh/authorized_keys

그리고 위 키값이 나의 로컬환경과 맞는지 비교해본다.

일치 한다면 다음 스텝으로 넘어간다.
2. 파일 권한 설정 확인
Target PC의 권한 설정이 옳바른지 확인한다. 옳바르지 않다면 아래와 같은 명령어로 변경해준다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
3. SSH 서버 설정 확인
아래 명령어를 실행하여 일부 설정을 변경해줘야한다.
PubkeyAuthentication옵션이yes로 설정되어 있어야 한다.AuthorizedKeysFile.ssh/authorized_keys로 되어있는지 확인한다.
sudo vim /etc/ssh/sshd_config

설정이 변경되었다면 아래 명령어를 통해 재시작한다.
sudo systemctl restart sshd
그래도 비밀번호를 요구하면 다음 스텝으로 넘어간다.
4. 추가 정보 확인
- 로그에서 'Next authentication method: password'라고 나오기 전, 제공된 공개키가 왜 거부되었는지 서버 측 로그(
/var/log/auth.log또는/var/log/secure)를 확인하여 추가적인 정보를 얻을 수 있다. - 먼저 로컬 PC에서 SSH 명령을 통해 접속을 시도하고 비밀번호를 입력한 후 들어간다. 그 후 Target PC에서아래 명령어를 통해 로그를 확인한다..
cat /var/log/auth.log
나의 경우 아래와 같은 로그 메시지가 떴다.
May 14 14:40:36 ai-07 sshd[1388940]: Authentication refused: bad ownership or modes for directory /home/groupai
May 14 14:40:41 ai-07 sshd[1388940]: Accepted password for groupai from 221.xxx.xxx.xxx port xxxxx ssh2
로그 메시지에 따르면 SSH 공개키 인증이 실패한 원인은 사용자 홈 디렉토리 /home/groupai의 권한 설정 문제 때문인걸로 보인다. SSH는 보안상의 이유로 매우 엄격한 파일 및 디렉토리 권한 요구 사항을 가지고 있다.
따라서 아래 명령어로 해결해준다.
chmod 755 /home/groupai
이후에는 Password가 필요없는것을 확인할 수 있다.
[reference]
Comment