1. ssh-key 생성
-t 옵션으로 암호화 형식을 rsa로 지정
기본경로로 설정하면 .ssh 디렉토리가 생기며 아래에 id_rsa와 id_rsa.pub 파일이 생긴다.
각각 private key, public key 이다.
경로지정 -> 패스워드 설정
[root@host .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ibroot/.ssh/id_rsa):
Created directory '/home/ibroot/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ibroot/.ssh/id_rsa.
Your public key has been saved in /home/ibroot/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:RPmY3HUwEThRLHrpkWvmpDTy00J/Q85de06U7WHNNpM ibroot@NKIV-Ansible
The key's randomart image is:
+---[RSA 2048]----+
| ...=*+ |
| .. + o.. |
| ..* * . |
| .= B .=|
| So o E*|
| . + * . .+=|
| = X + . .+|
| = + = .o.|
| o . . .o|
+----[SHA256]-----+
2. ssh-key 배포
생성된 public key를 원격서버에 배포해야 한다.
# ssh-copy-id -i /home/ibroot/.ssh/id_rsa.pub "client 계정"@"client IP"
전송하면 known_hosts 파일이 생긴다.
[root@host .ssh]# cat known_hosts
172.16.0.88 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0W6eEWRA29CREvxTa/q13A8ygvKLNCplXL03Gi37gmj1+0yrNNHO0ZggMx4ip/AxinpJZrPpjHQVDdjmVfPYZAUtoCsgwUOiGDrcHzOVKEKyOACFPRF8DUNKtEqaPm5cLJBwrK1bkKl+ELoZeqVsL8fhbx818rxLAbvAyfVZKfYMPUxny6zTYexqGs8eZAl47WJzTNocOcms2oz+gZkYen/nVwzezfaHa3kF14fFPusin4BRvK0wvI/tjJNbPjnC5tKgiVO62PprmQo08tk15/qaBLZzJLDtWWsmSaG/6AulcOi8X5oJSvqUXZl8O7jJeDuSsWYNZDIewaOZbFbBkw==
암호를 입력하고 사용자가 인증되면 공개 키 ~/.ssh/id_rsa.pub가 client ~/.ssh/authorized_keys 파일에 추가된다.
[root@client .ssh]# pwd
/root/.ssh
[root@client .ssh]# ll
합계 4
-rw-------. 1 root root 572 3월 7 16:57 authorized_keys
결론
이제 host에서 client 로 ssh 접속 시 패스워드 없이 접속 가능하다.
패스워드 접속보다 보안적 측면에서 뛰어나며, 워크플로우가 간단해진다.