접근자 : Git 서버
접근하려는 서버 : 배포 서버
접근자의 공개키를 접근하려는 서버에 등록한다.
SSH 설치 확인
Linux 최신 배포판은 기본적으로 탑재
# rpm -qa | grep openssh-server
openssh-server-6.6.1p1-31.el7.x86_64
OpenSSH 패키지 설치
# yum install openssh-server openssh-clients openssh-askpass
Installed:
openssh-askpass.x86_64 0:7.4p1-16.el7
Dependency Installed:
atk.x86_64 0:2.28.1-1.el7 gtk-update-icon-cache.x86_64 0:3.22.30-3.el7
gtk2.x86_64 0:2.24.31-1.el7 hicolor-icon-theme.noarch 0:0.12-7.el7
libXcomposite.x86_64 0:0.4.4-4.1.el7 libXcursor.x86_64 0:1.1.15-1.el7
libXi.x86_64 0:1.7.9-1.el7 libXinerama.x86_64 0:1.1.3-2.1.el7
libXrandr.x86_64 0:1.5.1-2.el7
Updated:
openssh-clients.x86_64 0:7.4p1-16.el7 openssh-server.x86_64 0:7.4p1-16.el7
Dependency Updated:
openssh.x86_64 0:7.4p1-16.el7
Complete!
위치 확인
# which sshd
/usr/sbin/sshd
설정 파일 수정
# vi /etc/ssh/sshd_config
Port 22 // Port 변경할 경우 주석 풀고 지정
방화벽 해제
# firewall-cmd --permanent --zone=public --add-port=22/tcp
구동
SSH Server 프로세스명은 sshd(SSH Daemon)
# /bin/systemctl sshd restart
구동 확인
# ps -aef | grep sshd
root 32699 1 0 09:27 ? 00:00:00 /usr/sbin/sshd -D
# /bin/systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-07-24 09:27:06 KST; 1s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 32699 (sshd)
Memory: 980.0K
CGroup: /system.slice/sshd.service
└─32699 /usr/sbin/sshd -D
Git 서버(25) laravel 계정에 SSH Key 생성
# su - laravel
# ssh-keygen -t rsa -b 4096 -N ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/laravel/.ssh/id_rsa): // 옵션 ‘-f {저장경로}’ 지정하면 안 물어봄
Created directory '/home/laravel/.ssh'.
Your identification has been saved in /home/laravel/.ssh/id_rsa.
Your public key has been saved in /home/laravel/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wTvfAlbqytI6Ho+QLhboVliuMP/UD1NT0AjDz41AIgw laravel@dico-dev
The key's randomart image is:
+---[RSA 4096]----+
|Eo. .o+..o |
| .. .oo... |
| +ooo |
| . +*. |
|. + S |
|+o + . + = . |
|oo* o.+ . o . |
|.*.oo=.= . |
|o..o=++ . |
+----[SHA256]-----+
- id_rsa : 비밀키
- id_rsa.pub : 공개키. 로그인 인증키
- authorized_keys : 서버에서 인증된 공개키 정보를 저장하는 파일. 권한 600. 개행 문자로 공개키를 구분하여 여러개 저장. 비밀키를 갖고 있는 클라이언트에 접속 시 자동 인증 처리.
- known_hosts : 접속하려는 대상의 호스트키를 등록. 처음 접속 시 ‘Are you sure you want to continue connecting (yes/no)?’에서 yes하면 등록이 되어서 다음 접속부터는 확인하지 않는다.
보안 컨텍스트 복구
# restorecon -R ~/.ssh
Git 서버(25) 개인키 복호화
암호화되어 있으면 외부에서 접속할 때마다 암호를 입력해야 한다.
# cp ~/.ssh/id_rsa ~/.ssh/id_rsa.enc
# openssl rsa -in ~/.ssh/id_rsa.enc -out ~/.ssh/id_rsa
배포 서버(20)에서 Git 서버(25) SSH 공개키 복사
# ssh root@192.168.0.25 cat ~/.ssh/id_rsa.pub | tee -a ~/.ssh/authorized_keys
보안을 위해 배포 서버(20) SSH를 다른 계정에서 사용할 수 없도록 처리
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/authorized_keys
Git 서버에서 배포 서버 접속 가능
# ssh laravel@192.168.0.20