SSH(secure shell)
ssh
- ssh는 통신 구간을 암호화
- 암호화 되지 않은 통신을 사용하던 telnet 서비스는 없어짐
- 기본으로 리눅스 서버들은 ssh 서비스가 탑재되어있다.
- Linux의 ssh 는 openssh 사용
ssh server, ssh client
- sshd
- ssh daemon, 즉 ssh server을 의미한다.
- ssh
- ssh client이며, ssh 명령어가 바로 ssh client CLI 유틸리티이다.
- MS 윈도 계열에서 접속하려면 putty 같은 툴을 사용한다.
sshd : prerequisite
- sshd 서버의 준비 작업
- sshd 서버의 설치 여부 확인
- sshd 서비스가 실행 중인지 확인
- ssh port(22/tcp)가 방화벽에 허용되어 있는지 확인
- sshd 서비스가 실행중인지 확인한다.
- systend 기반 :
systenctl status sshd
- init 기반(구형 리눅스) :
service sshd status
```bash obo@obo-900X3L:~/Github/happyOBO.github.io$ systemctl status sshd ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since 목 2020-12-17 23:58:30 KST; 1min 40s ago Main PID: 23314 (sshd) CGroup: /system.slice/ssh.service └─23314 /usr/sbin/sshd -D
12월 17 23:58:30 obo-900X3L systemd[1]: Starting OpenBSD Secure Shell server… 12월 17 23:58:30 obo-900X3L sshd[23314]: Server listening on 0.0.0.0 port 22. 12월 17 23:58:30 obo-900X3L sshd[23314]: Server listening on :: port 22. 12월 17 23:58:30 obo-900X3L systemd[1]: Started OpenBSD Secure Shell server.
```s ## ssh port(22/tcp) 상태 확인 obo@obo-900X3L:~/Github/happyOBO.github.io$ ss -nltp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 5 127.0.1.1:53 *:* LISTEN 0 128 *:22 *:* LISTEN 0 5 127.0.0.1:631 *:* LISTEN 0 128 :::22 :::* LISTEN 0 5 ::1:631 :::*
- systend 기반 :
- 보니까 22번 포트를 서비스 하고 있는 애가 두개다. 왜일까!
- 위에건 IPv4, 아래건 IPv6 주소이다…!
ssh client
ssh [-p port] [username@] <host addr>
- 예시 )
ssh 192.168.52.110
,ssh linuxer@192.168.52.110
,ssh -p 20022 192.168.52.110
- port 를 생략하면, default 번호인 22 번으로 된다.
- 예시 )
ssh-keygen
- 실제 실무에서는 암호를 다 치지 않고, 키를 만들어서 키 기반 통신을 한다.
- 키를 만들어주는게 바로 ssh-keygen!
-N
: new passphrase- pubkey 기반 연결
ssh-keygen -N "" ssh-copy-id obo@192.168.52.110 # remote의 ~/.ssh/authorized_keys에 복사하는 과정 ssh obo@192.168.52.110
curl
- 프로그램을 압축된 파일 하나로 다운 받을 때 사용한다.
- URL을 기반으로 통신하는 기능 제공
-
CLI tool 과 library 제공
curl [option] <URL>
curl -O https://www.mycompany.com/docs/manual.html # maual.html 파일로 저장 curl -o nate.html https://www.nate.com # URL에 파일 명이 없으므로 -o 옵션으로 직접 지정 obo@obo-900X3L:~$ curl v2.wttr.in/Seoul ┌┤ Weather report for: Seoul ├─────────────────────────────────────────┐ │ │ │ │ │ Fri 18 Dec Sat 19 Dec Sun 20 Dec │ │ ╷ ╷ │ │ │ │ │ │+0 ⡰⠉⡆ │ │⡇ ⢰⠁ ⠸⡀ │ │⡇ ⠇ ⢣ ⢀⣀ ⢀⠤⠤⢄⡀ │ │⡇ ⡜ ⠈⢆⢀⠖⠁ ⠑⠤⡠⠔⠁ ⠐⡄ ⣀⡀ │ │⡇ ⣀⣀⡠⠔⠁ ⠁ ⠈⠡⡀ ⡠⠊ ⠈⢆ ⢀⣀⡀ │ │⡇ ⡠⠊ ⠈⠒⠤⣀⡀⢀⡔⠁ ⠈⡂ ⢀⠔⠁ ⠑⡆ │ │⡇⡠⠊ ⠈⠁ ⠱⡀ ⣀⠤⠤⠤⣀⣀⣀⠤⠒⠁ ⢘ │ │⠗⠁ ⢣ ⢀⠎ ⡇ │ │ ⠈⢆ ⡠⠃ ⢱ │ │-9 ⠈⠢⣀⢁⡠⠒⠊ ⠘⠄│ │ │ │─────┴─────┼─────┴─────╂─────┴─────┼─────┴─────╂─────┴─────┼─────┴─────╂│ │ 6 12 18 6 12 18 6 12 18 │ │ │ │ 0.67mm|0% │ │ ▇█ │ │ ██▂ │ │ ████ │ │ ████_ │ │ __ ▇█████ ▁▇▅▂ │ │ │ │ │ │ ☀️ ☀️ ☀️ ☀️ ☀️ ☁️ 🌨 ❄️ ☁️ ❄️ ⛅️ ⛅️ ☁️ ☀️ ☀️ ⛅️ ⛅️ ⛅️ ☀️ ☀️ ☀️ ☀️ ☀️ ☀️ │ │ ↘ ↘ ↘ ↘ ↓ ↗ ↖ ← ↖ ↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ ↘ │ │ 9 5 3 3 1 5 3 4 3 1 5 8 12 15 15 13 10 7 6 6 12 14 13 9 │ │ │ │🌒 🌒 🌒 🌒│ │ ─━━━━━━━━━─ ─━━━━━━━━━─ ─━━━━━━━━━─ │ │ │ │ │ └────────────────────────────────────────────────────────────────────────┘ Weather: 🌨 Light snow, -1°C, 79%, ←4km/h, 1028hPa Timezone: Asia/Seoul Now: 00:31:00+0900 | Dawn: 07:11:18 | Sunrise: 07:41:11 Zenith: 12:28:11 | Sunset: 17:15:16 | Dusk: 17:45:08 Location: 서울특별시, 대한민국 [37.5668,126.9784] Follow @igor_chubin for wttr.in updates
CLI 에서 웹브라우징
sudo apt -y install elinks
elinks
- 주소 검색
wget
wget <URL>
- wget과 curl은 대부분의 기능은 비슷하나, curl이 더많은 기능을 가진다. 하지만, 파일 다운로드에 특화된 기능이 존재한다.
nc (netcat)
- network 기능이 가능한 cat