개념-ssh
public key(대칭키) and private key(공개키, 비대칭키)
- 대칭키 암호화와 복호화에 사용하는 키가 동일한 방식
- 비대칭키 암호화에 사용하는 키(public key)와 복호화에 사용하는 키(private key)가 다른 방식
public key는 공개적으로 배포가 가능.
ssh?
원격지의 셸에 접속하기 위해 사용되는 네트워크 프로토콜이다.
암호화가 이루어지지 않는 텍스트 기반 통신인 telnet에 비교하여 보안성이 높은 프로토콜이며,
키 교환 알고리즘 기반의 암호화 기능을 추가하여 1995년에 공개된 프로토콜이다.
server의 공개키는 client가 처음으로 접속을 시작할 때 취득한다. client의 공개키는 프로토콜 이외의 방식으로 server의 ~/.ssh/authorized_keys 파일에 입력한다.
사용환경
서버: Ubuntu 18.04 클라이언트: macos 14.5
server setting
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# ssh server 설치 확인
apt list openssh*
# 설치안된경우 설치
apt install openssh-server
# sshd status확인
systemctl status sshd
# sshd status가 active가 아닌 경우 restart
systemctl restart sshd
###### 필요하면 수행 #####
# sshd port(22)가 LISTEN state인지 확인
# ss -nlt (in ubuntu)
# netstat -an | grep LISTEN (in macos m1)
# 방화벽 활성화여부 확인
# ufw staus
# 방화벽 rule확인
# iptables -nL (in macos m1)
# 필요하면 방화벽 활성화
# ufw enable
# 방화벽에 22/tcp 허용
# ufw allow 22/tcp
###### 필요하면 수행 #####
/etc/ssh/sshd_config파일설정
1
2
3
4
5
6
Port 22
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
X11Forwarding yes
PermitRootLogin는 보안상 no를 하는 것이 좋지만, 연구실에서는 yes로 한다.
ssh설정 중에 client에서 server로 ssh-copy-id를 통해 publickey를 복사해야하므로,
PasswordAuthentication는 yes로 해두고, publickey를 통한 ssh연결 setting이 끝나면 no로 한다.
X11Forwarding은 gzclient등의 GUI프로그램 실행시 client에 나타나도록 한다.
설정이 끝나면, sshd를 restart해야 적용된다.
server가 client의 공개키를 가졌는지 확인
1
2
3
vi ~/.ssh/authorized_keys
# X11Forwarding 관련 패키지
sudo apt-get install xauth xorg
client에서 동일한 key로 다른 machine에 ssh연결을 원하는 경우, ~/.ssh파일을 원하는 machine에 복사하면 된다.
client setting
1
2
3
4
5
6
7
8
# ssh key 생성
# ssh-keygen -t rsa -b 4096 -f {keyfile이름}
ssh-keygen -t rsa -b 4096
# public key를 server에 복사
# server에서 vi ~/.ssh/authorized_keys로 확인가능
ssh-copy-id -i mykey.pub {user}@{ip}
# X11Forwarding 관련 패키지
sudo apt-get install xauth xorg
ssh -X user@ssh_server_address
참고문서
This post is licensed under CC BY 4.0 by the author.