1. 실제로 웹서비스를 하는 회사에서 어떻게 처리하는지 모르겠지만
나는 데이터베이스를 다룰 때는 sql툴을 사용하고
배포할 때는 ssh를 통해 서버에 접속해서
깃허브 pull -> gunicorn -> nginx
일련의 과정을 직접 하나하나 처리한다.
서버가 내 옆에 있다면 직접 키보드 연결해서 처리해도 되겠지만
요즘 필수가 된 클라우드 컴퓨팅을 생각해보면 SSH에 익숙해질 필요가 있다고 본다.
(AWS EC2 역시 이 방식으로 제어하니까..)
2. 서버와 클라이언트
1)서버
- openssh-server 설치
# server - 명령어를 입력할 위치
sudo apt-get install openssh-server
- ssh 실행
# server
sudo service ssh start
2) 클라이언트
- git bash 실행(putty사용해도 됨, cmd 사용해도 됨)
# client
ssh '서버계정이름'@'서버ip' -p '포트번호'
* 계정명 - aws ec2에서 ubuntu인스턴스를 생성하면 기본적으로 ubuntu라는 계정명이 생성됨.
* ip - ifconfig | grep inet 명령어로 확인가능.
* 포트번호 - sshd_config파일에서 설정한 Port 값. 기본값은 22.
3) 보안
- pub키를 이용한 접근제한 방법
- 키 생성
# client
ssh-keygen -t 'key file name'
커맨드 실행시 passphrase(비밀번호) 입력을 받는데
빈칸으로 넘기면 비밀번호 없이 키가 생성된다. (이중잠금)
* 생성된 키는 client컴퓨터(윈도우라 가정) C드라이브/Users/계정명/.ssh 폴더에 위치한다.
- 키 등록
# server
# .ssh 생성
mkdir ~/.ssh
# authorized_keys 파일 생성
sudo vim ~/.ssh/authorized_keys
#########
authorized_keys파일 내부에 keygen으로 생성한 키 파일의 내용을 복사
#########
# authorized_keys 파일 권한 수정
sudo chmod 755 /.ssh/authorized_keys
- 설정 변경
# server
sudo vim /etc/ssh/sshd_config
* sudo = 관리자 권한으로 실행
* vim = vi와 같은 편집툴. 설치 안되어 있다면 vi로 실행(아니면 sudo apt-get install vim 으로 설치)
- 설정파일 내용
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
Port 6364
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
MaxAuthTries 8
#MaxSessions 10
PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
* Port - ssh 기본 포트는 22번. 그만큼 22번 포트로 들어오는 접속시도도 많다.
처음에 방화벽이나 다른 조치 하나도 없이 개방해두었다가
그래픽카드들이 채굴장으로 끌려가는 사고가 발생했다.
* Permitrootlogin - root계정으로 로그인을 허용할지
* PubkeyAuthentication - pub키를 사용해서 인증할지
* PasswordAuthentication - password를 사용해서 인증할지, pubkey와 조합하면 비밀번호 없이 pubkey로만 접속 할 수 있다.
- 방화벽 실행
# server
sudo ufw allow 포트번호
sudo ufw enable
* 방화벽 규칙 추가 sudo ufw allow '번호'
* 방화벽 규칙 삭제 sudo ufw delete '규칙' '번호' (allow인지 deny인지)
- ssh 재시작
# server
sudo service ssh restart
'개발 > Linux(Ubuntu)' 카테고리의 다른 글
04 - Docker (0) | 2022.04.01 |
---|---|
04 - mariadb(mysql) (0) | 2022.04.01 |
03 - FTP (0) | 2022.03.31 |
01 - OS (0) | 2022.03.31 |