SSH 기밀 해제 로그인
11491 단어 일상적인 일
원리
서버 A(10.10.26.95)가 서버 B(10.18.36.231)에 액세스하지 않으려면 A가 클라이언트로서 자신의 공개 키를 B 서버에 등록으로 보내야 하고 공개 키를 통해 비밀 액세스를 해제할 수 있다
프로세스
A 공개 키 생성
1. 서버 A에서 들어갑니다.ssh 디렉터리 (일반 개인 키는 이 디렉터리에 저장)
cd ~/.ssh/
2. 공개 키 생성(매개 변수를 가지고 직접 조회할 수 있음-t-f-C)(현재 디렉터리에서 공개 키를 생성함)
ssh-keygen
결과
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
78:2b:********************:3c:3c:56:cf root@zw_26_95
3. 검사
ls
결과 목록
authorized_keys id_rsa id_rsa.pub known_hosts
id_rsa 즉 개인 키, id_rsa.pub는 공개 키입니다.
B 서버에 공개 키 복사
1. 복제
ssh-copy-id -i id_rsa.pub root@10.18.36.231
id_rsa.pub는/root/입니다.ssh/디렉터리의 공개 키 파일, 루트는 B 서버의 사용자 이름, 10.18.36.231은 B 서버의 IP
2, RSA 지문 확인 (이전에 B 서버에 액세스한 경우 이 단계가 없음)
10
The authenticity of host '10.18.36.231 (10.18.36.231)' can't be established.
RSA key fingerprint is 2d:aa:14**********************e:cb:ef:d0:f0.
Are you sure you want to continue connecting (yes/no)?
B 서버에 처음 접속하기 때문에 B 서버의 RSA 지문이 신뢰할 수 있는지 확인하려면 yes 확인 을 입력하십시오.
3. B 서버 사용자 이름에 대한 암호 입력
Warning: Permanently added '10.18.36.231' (RSA) to the list of known hosts.
root@10.18.36.231's password:
B 서버의 RSA 지문 인증이 이 서버의 known hosts 파일에 영구적으로 추가되었음을 알립니다(vim ~/.ssh/known hosts 보기)
B 서버에 루트 사용자 이름의 비밀번호를 입력하고 리턴합니다. (이곳에서는 이번 로그인 B 서버에서 B 서버를 설정하는 authorized_keys 파일로 사용해야 합니다. 여기서 설정할 때 한 번만 입력하면 공개 키를 설정한 후에 ssh 접근은 더 이상 비밀번호를 사용할 필요가 없습니다. 첫 번째 설정은 비밀번호가 필요합니다. 임의의 클라이언트가 서버에 접근할 수 없는 상황도 방지합니다.)
4, B 서버에 로그인
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
ssh 사용 알림[email protected]'B 서버에 액세스하여 확인하십시오.ssh 디렉터리의 authorized_키 파일, 추가된 키가 정확한지 확인하십시오.B 서버에 로그인하면 authorized_keys 파일에 A 서버의 공개 키가 추가되었습니다.
ssh-rsa AAAAB**********AAAABIwAAAQE************rrlFxlNH1zO9J2e********L6tCy4u9S2FL10hfTww8ju********wk8l5s6YCOwZYa9Yj***Ao8ZWi4e0owzfwQ**********qkboLFB6Mz81ZfEUL/a5Hn9rqdWzd+xY3*************4alT6RrRz0XIgtBtMdJeSUP/SU4lnuGt********nyXRIcbZq54gEwqed8T0qC9w**Toj/QJ8VlpueEWdCcS***********gpqXm7ZJlDfAru3B3doQdTYuL7kx2KKysq**********rJQ8G4vsK7039Iw== root@zw_26_95
구성 완료
exit 가 A 서버로 반환됨
exit
개인적 사고
1. A의 비밀 접근 면제 키를 B의 authorized_에 설정해야 합니다keys에서 나중에 공개 키를 통해 비밀 접근을 면제할 수 있습니다.
2. 공개 키를 설정하는 과정에서 B의 사용자 이름과 비밀번호를 지정해야 하기 때문에 클라이언트가 임의로 공개 키를 설정하여 서버에 접근하는 문제를 피할 수 있다.
3. SSH 접근은 두 기계의 사용자 간의 비밀 접근 면제이다. A에서 루트 사용자가 ssh-copy-id를 시작하면 B 서버의authorized_keys 파일에 저장된 것은 A의 루트 사용자 아래의 공개 키입니다.root@zw_26_95), ssh-copy-id를 시작할 때 뒤에 있는 사용자 부분은 방문한 B 서버의 사용자(eg:mercyu)입니다. 사용자 이름과 비밀번호가 통과되면 B 서버mercyu의 대응 디렉터리(/home/mercyu/.ssh/)에 있는authorized_keys 저장소, 그러면 로그인할 때mercyu 사용자에게 로그인합니다.특히, 사용자 이름을 빼고 쓰지 않으면, 기본값은 루트 사용자입니다.
3、authorized_keys 파일 인증은 비밀 접근이 불가능한 클라이언트의 공개 키입니다. known hosts 파일은 첫 번째 대상 서버에 접근할 때 로컬 서버에 대상 서버에 대한 RSA 지문 인증을 추가합니다. 전체 과정 A의 known hosts 파일 변경, B의 authorized_keys 파일 변경;
4. ssh-copy-id와 ssh-keygen은 모두 스크립트 파일로/usr/bin/디렉터리 아래에 있습니다.