Home

읽기 설정

어이, 잘 지내? 있잖아, 몇몇 사람들이 SSH에 대한 영상 만들어달라고 요청했어. 사실 나도 이 주제를 다루고 싶었는데, 뭐랄까, 처음 배울 때 개념적으로 이해하는 데 좀 힘들었거든. 명령어 자체는 괜찮았는데, 문법이나 옵션 같은 건…00:00

거의 사소한 내용이지만, 포트가 무엇인지, SSH 키가 어떤 역할을 하는지 같은 개념들을 이해하기 쉽게 설명하고 싶어요. 아직 시스템 관리 관련 지식이 별로 없더라도 쉽게 따라올 수 있도록 말이죠.00:16

자, 우선 무엇보다 SSH가 정확히 무엇인지부터 설명해 드릴게요. SSH는 원격 장치나 서버와 안전하고 암호화된 연결을 설정하기 위한 프로토콜이라고 할 수 있습니다. 실제로 보면 서버에 SSH로 접속하면, bash나 zsh 같은 로그인 쉘에 들어가게 되죠.00:29

거기서 키보드 연결해서 직접 서버에 앉아있는 것처럼 쉘에서 명령을 실행할 수 있게 되는 거죠, 맞죠?00:46

SSH의 핵심적인 목적은 잠재적으로 안전하지 않은 네트워크를 통해 서로 신뢰할 수 없는 두 호스트 간에 안전한 암호화된 통신을 제공하는 데 있습니다. 사실 SSH가 개발된 이유가 바로 그거죠, 맞죠?00:53

이전의 안전하지 않고 암호화되지 않은 프로토콜을 대체하기 위해 개발되었으며, SSH는 Secure Shell의 약자입니다.01:06

자, SSH 말인데요, 만약 설치되어 있지 않다면, 이 SSH 명령어가 없다면, 배포판의 패키지 관리자에서 OpenSSH를 그냥 다운로드 받으세요. SSH 클라이언트랑 SSH 서버 데몬 둘 다 설치해 줄 겁니다. 클라이언트는 SSH 서버에 접속할 때 사용하는 프로그램이에요.01:14

그리고 데몬은 서버를 켜기 위해 실행해야 하는 것입니다. 자, 기본적인 명령어 구문은 ssh user at host입니다. 여기서 user는 연결하려는 컴퓨터의 사용자 이름이고, host는 실제 호스트 이름이거나 DNS 또는 IP 주소가 됩니다. 예를 들어01:32

제 씽크패드가 여기 있네요. C 매트릭스를 돌려서 좀 멋있어 보이긴 하지만, 더 중요한 건 이 SSH 서버를 돌리고 있어서, 바로 SSH로 접속할 수 있다는 거예요. 제 사용자 이름은 '브레드'이고, 브레드@192.168.1.241로 접속할 거에요. 이게 제 로컬 IP 주소입니다. 엔터 키를 누르면, 사용자 브레드로 쉘에 접속됩니다.01:52

이 씽패드에서, 아, 명령을 실행할 수도 있었어요. 그 사용자 계정으로요.02:12

그래서, 호스트 이름을 출력해 볼까요. 연결을 종료할 수도 있습니다. 셸로 들어가지 않고도 명령어를 바로 실행할 수도 있어요. 예를 들어, 'cat Etsy 호스트 이름'과 같이 실행할 수 있습니다.02:16

그냥 실행해 봐. 그러면 ThinkPad에서 user bread로 접속한 것처럼 호스트 이름을 보여줄 거야. 그래서 이게 기본적인 사용법이야. 아마 바로 알아챘을 수도 있는데, 내가 비밀번호를 입력하지 않았어.02:28

보통은, 아시다시피 사용자 계정에 로그인할 때는 비밀번호를 입력하죠. 비밀번호를 설정하지 않았다면 몰라도, 저는 제 사용자 계정에 비밀번호를 설정해 뒀어요. 그런데 저는 SSH 키 페어를 사용하고 있는데, SSH가 처음 뭔지 배울 때 이 개념을 이해하는 데 정말 고생했어요.02:37

음, 제가 생각하기에는 '퍼블릭 키 암호화'나 '챌린지-리스폰스 인증' 같은 단어들을 보면 뇌가 그냥 멈춰버리니까요. 그래서 좀 더 쉽게 설명해 보려고 해요. 복잡한 단어들은 쓰지 않고 간단하게 설명해 드릴게요. SSH 키 페어는…02:53

SSH 키 페어를 생성할 건데요. 그 페어는 공개 키와 개인 키로 이루어집니다. 이름에서 알 수 있듯이, 공개 키는 원하는 서버에 자유롭게 공유하게 됩니다.03:09

개인 키는 오직 본인만 알아야 할 정보입니다. 절대로 다른 사람과 공유하면 안 되죠. 따라서 키를 이용해서 서버에 자동으로 접속하고 싶을 때는, 서버에 공개 키를 등록해야 합니다. 그리고 공개 키를 해당 서버로 전송해야 합니다.03:20

그 서버는 당신의 공개 키를 보관하게 될 겁니다.03:35

앞으로 언제든지 다시 연결을 시도할 때, 여러분의 공개 키로 암호화된 서버는 연결에 사용하시는 클라이언트로 다시 퍼즐을 보낼 겁니다. 그리고 그 퍼즐은 여러분의 개인 키로만 풀 수 있지만, 개인 키 자체가 노출되지는 않을 거예요.03:38

그래서, 개인 키가 그 퍼즐을 풀어줄 거예요. 서버한테 '퍼즐 푼다!' 하고 알려주고, 통과시켜 주는 거죠. 그리고 접속을 허락하는 거예요. 그리고 이게 바로 인증이 작동하는 방식이죠. 그리고 이건 조금 단순화한 내용이지만, 개념을 설명하는 가장 좋은 방법이라고 생각해요.03:53

그래서 이게 바로 챌린지-리스폰스 인증이 실제로 무엇인지에 대한 설명입니다. 그리고 키 기반 인증의 가장 큰 장점은 비밀번호 인증과 달리 무차별 대입 공격에 취약하지 않다는 것입니다.04:07

그냥 비밀번호 로그인만 한다면, 누군가가 프로그램을 만들어서 무작정 백억 개의 비밀번호를 시도해서 결국 맞는 비밀번호를 찾을 수 있어요. 반면에 키 페어는 그런 식으로 작동하지 않거든요.04:19

서버가 해킹당했어도 비밀번호는 절대 알려주지 않겠지, 그렇지?04:30

비밀번호를 직접 입력하는 게 아니라, 일종의 퍼즐 인증을 보내는 거죠. 개인 키를 보내는 건 아니에요. 설정하는 방법은 정말 간단합니다. 그냥 ssh-keygen이라는 명령어를 한 번 실행하면 됩니다.04:34

이걸 실행하면 이런 형태의 결과가 나올 거예요. 개인 키와 공개 키를 생성해 줍니다. 개인 키는 절대로 공유하지 마세요. 하지만 공개 키는 원하는 사람에게 공유할 수 있습니다. `ssh-copy-id user at host` 명령어를 사용해서, 공유하려는 서버 정보로 채워서 공유하면 됩니다.04:48

먼저 진행하고 실행해 보세요. 그럼 과정을 안내해 줄 거예요. 다 되면 설정도 완료될 겁니다.05:04

그래서 ssh 키로 로그인할 수 있는데, 이게 그냥 비밀번호만 쓰는 것보다 훨씬 좋은 방법이에요. 훨씬 더 안전해요, 특히 원격으로, 로컬이 아닌 로그인 같은 경우에요.05:08

자, 이 명령어에 대해서 또 다른 점은 제가 여기서 명시하지 않은 숨겨진 값이 있다는 건데요, 바로 포트 번호입니다. 제가 그걸 한번 적어드릴게요. 보실 수 있도록.05:19

자, 대시 P 22. 실행하면 평소처럼 연결되고 종료될 겁니다.05:30

SSH 명령어에서 기본적으로 22번 포트가 사용됩니다. 만약 23번 포트를 지정한다고 해도 작동하지 않아요.05:35

포트가 정확히 무엇인지 설명하자면, 처음에는 정말 헷갈렸는데, 현실에서 항구가 배들이 도착하고 정박하는 곳처럼, 컴퓨터에서도 비슷한 개념입니다.05:42

포트 0부터 약 65,000까지, 다양한 포트들이 있어요. 기본적으로는 모두 닫혀 있지만, 특정 포트에서 서비스를 실행하면 그 포트가 열리고 들어오는 연결을 기다리게 돼요. 알겠죠?05:56

이 ThinkPad의 23번 포트는 현재 닫혀 있지만, 22번 포트는 SSH를 통해 실행되고 있습니다. SSH 데몬이 설정되어 있어서 22번 포트를 열었고, 현재 22번 포트가 들어오는 연결을 기다리고 있습니다.06:10

그래서 제가 여기서 제 PC에서 연결을 시도하고, '안녕하세요'라고 보내면, 22번 포트에서 그걸 듣고, 받아들이고, 연결을 허용하는 거죠.06:23

그래서 포트가 작동하는 방식은 이렇습니다. SSH의 기본 포트는 22번이지만, 이론적으로는 다른 포트에서 실행할 수도 있습니다.06:33

다양한 서비스들이 기본 포트 번호를 가지게 될 텐데, 예를 들어 HTTP는 기본적으로 포트 80으로 설정되는 거죠. 하지만 결국은 그냥 기본 포트를 사용한다는 뜻입니다.06:40

사용하실 필요는 없어요. 아무튼 SSH 명령어는 별도로 지정하지 않으면 포트 22를 기본으로 사용합니다.06:50

SSH 서버 실행 방법에 들어가기 전에 SCP 명령어에 대해서도 간단히 말씀드리고 싶었습니다.06:57

SCP 명령어를 사용해서 파일을 복사할 수 있습니다. 매뉴얼 페이지를 읽어보면 어떻게 하는지 알 수 있을 거예요. 아주 간단합니다. 그리고 저는 rsync에 대한 비디오도 만들었는데, 이게 기본적으로 SCP보다 더 나은 대안이에요.07:03

SCP 대신 이걸 사용해도 괜찮아요. 자, 이제 SSH 서버를 실제로 어떻게 실행하는지 알아볼까요. SSH 데몬으로 실행하시게 됩니다. 그리고 시작하는 방법은 sudo systemctl start sshd 명령어를 사용하시면 됩니다.07:13

그리고 여기서 sshd인데, 제가 Arch Linux를 사용하고 있어서 sshd입니다. 만약 Arch 기반을 사용하신다면 sshd고, Debian 기반이라면 Debian, Ubuntu 등등.07:27

일반적인 ssh를 사용하는 것 같습니다. 그리고 혹시 다른 init 시스템을 사용하신다면, 이 명령어를 적절하게 바꿔주세요. 다른 init 시스템을 사용하고 교체했다면, 이미 init 시스템 명령어들을 잘 알고 계실 거예요.07:38

어쨌든, systemctl status SSHD를 실행하면 상태를 확인할 수 있습니다. 현재 22번, 기본 포트에서 대기 중이라는 걸 알 수 있습니다.07:51

이게 제 호스트 이름이고, 이걸 이용해서 이 PC에 접속할 수 있습니다. 제 호스트 이름이나 로컬 IP 주소를 이용해서 22번 포트로 접속하는 거죠. 그리고 이건 모두 제 로컬 네트워크 안에서만 돌아가고 있습니다.08:00

이건 외부 인터넷에 노출되지 않고, 제 로컬 네트워크에만 연결되어 있습니다. 그래서 다른 곳에 연결된 노트북이 있다면, 로컬 네트워크에 접속해서 SSHN을 할 수 있습니다.08:13

자, 그럼 로컬 네트워크와 인터넷의 차이점에 대해 좀 더 자세히 이야기해 볼까요. 기본적인 차이는 아마 대부분 아실 거라고 생각합니다.08:22

집에서 사용하는 인터넷이 있고, 그 외에 더 넓은 인터넷 영역도 있잖아요. 근데 보안 측면에서 봤을 때, 제 로컬 네트워크에 SSH 서버를 돌릴 때는 보안에 대해 크게 신경 쓸 필요가 없어요. 왜냐하면 제가 유일한 사용자니까요.08:29

다른 사람이 제 인터넷을 사용할 일은 거의 없죠. 뭐, 제가 신뢰하는 사람이 와서 제 인터넷을 사용한다면 몰라도요. 하지만, 뭐, 사실상 저는 제가 유일하게 사용할 사람이 될 겁니다.08:46

내 로컬 인터넷에 연결된 내 인터넷을 무작위 사람이 해킹하려고 할 일은 없겠죠? 그런데 SSH 서버를 공개 인터넷에 연결하는 순간 누군가가 '아, 포트가 열려 있네'라고 볼 수 있어요.08:56

이 항구에 접속해 보고 싶어요. 그리고 그때부터 보안을 진지하게 고려해야 합니다. 자, 그럼 서버를 더 넓은 인터넷에 연결하는 방법을 알아봅시다. 우선 왜 그렇게 서둘러야 할지를 먼저 이야기해 볼까요?09:11

그렇게 하고 싶어 하는 이유는, 예를 들어서 노트북을 다른 곳에 가져가서, 다른 인터넷 네트워크에 연결한 다음, 집 컴퓨터나 집 서버에 SSH로 접속해서 명령을 실행하거나 파일을 접근하는 식으로 활용할 수 있기 때문이죠.09:22

분명히 아주 유용하고 많은 사람들이 그렇게 하긴 하지만, 이걸 하실 거라면 보안을 정말 중요하게 생각해야 합니다. 우선 SSH 설정을 주의 깊게 살펴보는 게 중요합니다.09:36

만약 제가 여기 Etsy SSH SSHD 설정 파일에 들어간다면, 이 파일은 SSH 데몬, 즉 SSH 서버를 실행하는 프로그램의 설정이 될 거예요.09:46

그리고 가장 먼저 말씀드릴 건, 제가 아직도 SSH 기본 포트가 22번으로 설정되어 있다는 거예요. 비록 인터넷 접근용 포트로 22번 포트를 사용하는 건 권장하지 않거든요.09:56

제가 이걸 왼쪽에 둔 이유는, 실제로, 들어오는 연결을 받도록 설정된 포트는 보통 공유기에서 설정되거든요.10:08

라우터에서 설정해야 합니다. 아시다시피, 모든 라우터와 인터넷 서비스가 조금씩 다르기 때문에, 그 부분까지 자세히 설명해 드릴 수는 없지만요. 그래도 관련 정보를 설명에 적어두어서 방향을 잡으실 수 있도록 돕겠습니다.10:17

기본적으로 포트 포워딩을 설정해야 하는데, 이건 공유기에서 연결을 받아들이도록 임의의 포트를 설정하는 걸 의미합니다. 그리고 그 연결이 로컬 머신으로 전달될 겁니다.10:28

그래서 192.16.6.8.1, 뭐뭐 뭐든지 22번 포트로 전달될 거예요. 그리고 여러분의 공유기에 있는 그 포트는, 아무거나 높은 숫자로 설정하는 게 좋아요. 예를 들어 48557이나 다른 아무거나 높은 숫자로요.10:39

포트 22는 사용하지 않으시는 게 좋습니다. 설명에 라우터 설정하는 방법이나 최소한 방향을 알려드리는 내용, 아니면 그냥 라우터 설명서만 읽어보시는 방법 등을 적어둘게요. 분명 거기에 나와 있을 거예요. 아무튼, 확인해야 할 설정들이 몇 가지 있습니다.10:53

루트 로그인 활성화는 개인 사용자로서 어떤 경우에도 원하지 않습니다. 그냥 이걸 끄세요. 비밀번호 인증도 원하지 않습니다.11:06

SSH 키를 사용해서 설정하는 게 좋으니까, 그냥 이 기능은 비활성화하는 게 좋습니다. 그래야 다른 곳에 가도 SSH 키로 인증할 수 있거든요.11:16

비밀번호를 사용할 필요가 없어요. 그러니까 그걸 설정하고 비밀번호를 비활성화하세요. 특정 사용자나 호스트를 허용하거나 거부하도록 설정할 수도 있습니다.11:24

예를 들어, bread라는 사용자를 허용된 유일한 사용자로 설정하는 거죠.11:33

하지만, 특정 IP 주소나 특정 키 페어만 허용하도록 설정하는 것을 추천합니다. 방화벽에서 특정 IP 주소만 허용하도록 설정할 수도 있습니다.11:36

그래서 필요한 정보는 설명에 포함시켜 드릴 거고, 그거랑 관련해서 방화벽에 대해서도 조금 이야기해야 할 것 같아요. 만약 실제로 이 명령어를 실행했는데 작동하지 않았다면, 그건 방화벽 때문에 차단된 거겠죠.11:45

만약 UFW를 사용하고 있다면, 예를 들어 UFW, 이 방화벽을 말씀드리는 거죠. sudo UFW allow SSH 명령어를 입력해서 SSH 포트를 방화벽을 통해 통과하도록 허용할 수 있습니다.11:57

그걸 바로 말씀드리지 않은 이유는 많은 분들이 공유기에서 방화벽을 사용하고 있기 때문입니다.12:07

혹시 아치 리눅스를 방금 설치하셨고 아직 이것저것 건드려 보지 않으셨다면, 로컬 머신에 방화벽을 설정하지 않았을 수도 있습니다.12:13

방화벽을 설정해두면 좋다고 생각해요. 라우터에 튼튼한 방화벽이 있더라도, 사용자 기계에도 방화벽을 설정해두는 게 좋을 것 같아요. 굳이 손해볼 일은 없으니까요.12:21

음, 아무튼 SSH 서버를 제대로 작동시키려면 방화벽에서 SSH를 풀어줘야 해요. UFW를 사용하든 다른 걸 사용하든 상관없이요. 혹시 다른 방화벽을 사용하고 있거나 제가 무슨 말인지 잘 모르겠고 UFW 명령어도 없다면, 아마 괜찮을 거예요.12:31

그 명령어 없어도 신경 쓰지 마세요. 아마 괜찮을 거예요. 아무튼, SSH 서버를 인터넷에 연결할 때, 그러니까 다른 사람이 그 포트가 열려있는 걸 볼 수도 있다는 얘기는 아니에요. 그걸 무서워할 필요는 없어요.12:47

그냥 그렇게 작동하는 방식이라는 걸 말하고 있어요. 현실적으로 그렇게 작동하는 거니까, 보안에 대해 뭘 하고 있는지 이해하고 보안을 진지하게 생각해야 한다는 뜻이에요. 그래서 관련 보안 사항에 대한 더 자세한 정보를 설명란에 넣어드릴게요.12:58

심각한 잘못이라기야 하죠. 매일 SSH 서버를 운영하는 사람도 많아요. 다만, 보안 설정을 제대로 확인하지 않고 무작정 사용하는 건 피해야겠죠. 아무튼, 이게 SSH의 아주 기본적인 내용입니다.13:12

알게 되셨으면 좋겠네요. 이 주제는 더 이야기할 거리가 많지만, 영상 하나에는 충분한 것 같아요. 아무튼 즐거우셨기를 바라며, 다음번에 또 만나요.13:26

평화!13:34

AI Summary

이 영상은 SSH의 기본 사용법과 보안 설정을 다루고 있어요. SSH는 원격 장치나 서버에 안전하게 접속해서 명령어를 실행할 수 있는 프로토콜인데, 잠재적으로 위험한 네트워크 환경에서도 안전한 통신을 제공하는 역할을 한답니다. 기본적인 접속 명령어부터 SSH 키 페어 설정, 방화벽 설정, 그리고 보안 강화를 위한 다양한 팁들을 알려주고 있어요. 특히, SSH 키 페어를 사용하면 비밀번호 없이 안전하게 인증할 수 있다는 점과, 보안을 위해 기본 포트 변경이나 설정 파일 확인 등을 권장하고 있어요. 마지막으로 SCP와 rsync 같은 유용한 명령어와 SSH 서버 실행 명령어까지 알려주면서, 앞으로 rsync 사용법과 SSHD 설정 파일 분석을 다룰 예정이라고 덧붙이고 있네요!

Key Highlights

  • SSH는 원격 장치나 서버에 안전하게 접속하는 프로토콜이다.
  • SSH 키 페어를 사용하면 비밀번호 없이 안전한 인증이 가능하다.
  • 보안 강화를 위해 SSH 기본 포트 변경 및 설정 파일 확인이 필요하다.
  • SCP는 파일 복사 명령어, rsync는 SCP보다 더 효율적인 대안이다.
  • SSH 서버는 `sudo systemctl start sshd` 명령어로 실행할 수 있다 (Arch Linux 기준).

Related Videos