우수한 소프트웨어와 실용적인 튜토리얼
일반적으로 ssh를 사용하여 원격으로 서버에 로그인할 때는 사용자 이름과 비밀번호를 입력해야 합니다. 이는 시스템을 자주 관리하는 사람들에게 매우 번거로운 일입니다. 비밀번호 없이 원격 서버에 직접 로그인하려면 어떻게 해야 할까요?리눅스/Unix 서버? SSH 공개 키 인증을 사용하면 이 문제를 해결할 수 있습니다.
공개 키 인증은 한 쌍의 암호화된 문자열을 사용합니다. 하나는 공개 키라고 하며 누구나 볼 수 있고 암호화에 사용되며, 다른 하나는 개인 키라고 하며 소유자만 볼 수 있고 복호화에 사용됩니다. 공개 키로 암호화된 암호문은 개인 키를 사용하여 쉽게 복호화할 수 있지만, 공개 키만으로 개인 키를 추측하는 것은 매우 어렵습니다.
공개 키 인증을 사용하기 전에 서버의 ssh 설정 파일 /etc/ssh/sshd_config를 확인하세요.
RSAAuthentication yes # RSA 인증을 활성화합니다. 기본값은 yes입니다. PubkeyAuthentication yes # 공개 키 인증을 활성화합니다. 기본값은 yes입니다.
구성에 문제가 없다면 다음 단계로 진행할 수 있습니다.
예를 들어 보겠습니다. 클라이언트 A와 서버 B라는 두 대의 컴퓨터가 있습니다. ssh 공개 키 인증을 사용하여 클라이언트 사용자로 컴퓨터 A에서 서버 사용자로 컴퓨터 B에 로그인하려는 경우, 방법은 다음과 같습니다.
1. 클라이언트 A에서 공개 키와 개인 키를 생성합니다.
ssh-keygen -t rsa 공개/비공개 RSA 키 쌍을 생성합니다. 키를 저장할 파일을 입력하세요(/home/client/.ssh/id_rsa): # Enter 키를 누르세요. '/home/client/.ssh' 디렉터리가 생성되었습니다. 암호를 입력하세요(암호가 없으면 비워 두세요): # Enter 키를 누르세요. 같은 암호를 다시 입력하세요: # Enter 키를 누르세요. 사용자 ID가 /home/client/.ssh/id_rsa에 저장되었습니다. 공개 키는 /home/client/.ssh/id_rsa.pub에 저장되었습니다. 키 지문은 다음과 같습니다: f5:30:ba:10:ee:7a:c6:cf:d8:ec:3f:4c:b3:f1:09:6d client@linuxsong.org
이렇게 하면 이 컴퓨터의 현재 사용자 클라이언트의 공개 키(/home/client/.ssh/id_rsa.pub)와 개인 키(/home/client/.ssh/id_rsa)가 생성됩니다.
2. 이전 단계에서 생성한 공개 키 파일을 서버 B에 복사합니다. 그런 다음 파일 내용을 서버 사용자 디렉터리의 .ssh/authorized_keys에 추가합니다.
cat id_rsa.pub >> .ssh/authorized_keys
이런 방식을 사용하면 클라이언트 사용자는 클라이언트에서 서버 사용자에 로그인할 때 비밀번호를 입력할 필요가 없습니다.
또한, 서버 보안이 비교적 높은 경우, 사용자가 공개 키 인증을 통해서만 로그인하고 비밀번호 로그인은 금지하도록 설정할 수 있습니다. 서버 설정 파일 /etc/sshd/sshd_config를 수정하기만 하면 됩니다.
비밀번호 인증 번호
수정 후 sshd 서비스를 다시 시작합니다.
이런 방식으로 사용자가 비밀번호로 로그인하면 다음과 같은 메시지가 표시됩니다.
권한이 거부되었습니다(publickey,gssapi-with-mic)
시스템의 보안을 효과적으로 개선합니다.
알아채다:
.ssh 디렉토리의 권한은 0700이어야 합니다.
.ssh/authorized_keys 파일 권한은 0600이어야 합니다.
그렇지 않으면 공개 키 인증이 적용되지 않습니다.