리눅스 초보자이신가요? SSH가 무엇인지, 어떤 기능을 제공하는지 궁금하신가요? 본 글에서는 리눅스 환경에서 SSH를 설정하고 사용하는 방법을 자세히 안내합니다. SSH의 작동 원리와 함께, 이를 활용해 수행할 수 있는 다양한 유용한 작업들을 살펴보겠습니다. 자, 시작해 볼까요?
SSH는 리눅스 플랫폼에서 매우 중요한 도구 중 하나입니다. 하지만, 대부분의 주요 리눅스 배포판(페도라 및 오픈수세 제외)에서는 기본적으로 설치되어 있지 않습니다. SSH 설정 자체는 간단합니다. 원격 리눅스 PC에 연결하려면 클라이언트 연결 도구를 설치하는 것이 가장 쉬운데, 이는 단순히 SSH 자체이며, 연결 서버를 실행하는 것과는 별개입니다.
그럼에도 불구하고 모든 리눅스 PC에 SSH 서버를 설정해두는 것이 좋습니다. 이렇게 하면 언제든지 양방향 통신이 가능하며, 어떤 PC에서든 다른 PC로 연결을 보내거나 받을 수 있습니다. 설정 방법은 다음과 같습니다.
SSH 도구 설치하기
우분투
sudo apt install openssh-server
아치 리눅스
sudo pacman -S openssh sudo systemctl enable sshd sudo systemctl start sshd
데비안
sudo apt-get install openssh-server
페도라/오픈수세
SSH가 이미 설치되어 있을 수 있지만, 서버가 활성화되지 않았을 수 있습니다. 활성화하려면 터미널을 열고 다음 명령어를 입력하세요.
sudo systemctl enable sshd sudo systemctl start sshd
기타 배포판
위에 언급되지 않은 다른 리눅스 배포판에서는 SSH 도구가 이미 포함되어 있을 수 있습니다. 만약 그렇지 않다면, 사용 중인 리눅스 버전의 공식 매뉴얼을 참조하는 것이 좋습니다. 또는 패키지 관리자를 통해 `openssh-server`, `ssh`, `sshd` 등을 검색하여 설치할 수 있습니다.
다음으로, SSH 설정 파일을 열어 몇 가지 설정을 변경해 보겠습니다. SSH는 기본적으로 22번 포트를 사용합니다. 이는 잘 알려진 포트이므로, 해커나 악의적인 사용자들이 이 포트를 통해 접속을 시도할 가능성이 높습니다. 따라서 포트를 임의의 다른 포트로 변경하는 것을 고려해 볼 수 있습니다. 어떤 포트든 상관없지만, 다른 프로그램에서 이미 사용 중인 포트가 아닌지 확인해야 합니다.
설정 파일은 다음 명령어로 편집할 수 있습니다: sudo nano /etc/ssh/ssh_config
파일에서 `# Port 22` 부분을 찾습니다. ‘#’을 제거하고 ’22’를 원하는 포트 번호로 변경합니다. Ctrl + O
를 눌러 변경 사항을 저장한 후, 다음 명령어로 SSH를 재시작합니다.
우분투/데비안:
service ssh restart
아치/오픈수세/페도라:
sudo systemctl sshd restart
참고: SSH 포트를 인터넷으로 포트 포워딩할 계획이 없다면, SSH 포트를 변경할 필요는 없습니다. 로컬 네트워크 내에서만 사용한다면 기본 포트를 사용해도 무방합니다.
다음 형식으로 SSH를 사용하여 서버에 연결할 수 있습니다: ssh -p 포트번호 [email protected]
명령줄을 이용한 파일 전송
SSH는 다른 컴퓨터에 원격으로 접근해야 할 때 유용합니다. 이는 인터넷을 통해 연결되는 컴퓨터일 수도 있고, 같은 네트워크 내에 있는 컴퓨터일 수도 있습니다. 원격으로 리눅스 PC에 접근할 때, 설정 파일이나 중요한 문서와 같은 파일에 접근해야 할 경우가 종종 있습니다. 터미널만 사용할 수 있을 때 원격 시스템으로 파일을 전송하는 것은 매우 번거로울 수 있습니다.
이러한 불편함을 해소하기 위해, SSH에는 SSH 연결을 통해 파일을 쉽게 주고받을 수 있는 기능이 내장되어 있습니다.
파일 또는 폴더를 전송하려면 다음 명령어를 사용합니다: scp /경로/파일-또는-폴더 [email protected]:/경로/대상/위치
본인의 상황에 맞게 `/경로/` 등을 수정해야 합니다. 예를 들어, 다음과 같이 사용할 수 있습니다:
scp /home/derrik/importantfile.txt [email protected]:/home/derrik-server/files/
언제 어디서나 안전한 FTP 서버
FTP는 오래된 기술이지만, 아직도 유용하게 사용되고 있습니다. 특히, SSH와 함께 사용될 때 더욱 강력한 기능을 제공합니다. 파일 관리자 내에서 원격 리눅스 PC의 전체 하드 드라이브에 매우 쉽게 접근할 수 있게 해줍니다. SFTP를 사용하기 위해 SSH 설정을 추가로 할 필요는 없습니다. SSH 서버가 실행 중인 모든 리눅스 PC는 SFTP를 지원합니다. SFTP를 사용하려면 파일 관리자를 열고 “서버”, “네트워크” 등의 항목을 찾으세요. 각 파일 관리자마다 인터페이스가 다르므로, 모든 방법을 설명하는 것은 불가능합니다.
다음과 같은 형식으로 SFTP 주소를 입력합니다: sftp://[email protected]:포트번호
SFTP 주소를 입력하면 비밀번호를 입력하고 SSH 서버의 키를 수락하라는 메시지가 표시됩니다.
참고: 네트워크 외부에서 SFTP에 접근하려면 SSH에 사용하는 포트를 포워딩해야 합니다. 포트 포워딩 방법은 라우터 설명서를 참고하십시오.
원격 백업
SSH는 드라이브와 파티션을 원격으로 백업하는 등 다양한 용도로 활용될 수 있습니다. 로컬 PC에서 하드 드라이브를 백업하고, SSH를 통해 네트워크를 거쳐 이미지를 보내려면 다음 명령어를 사용합니다.
참고: 이 예시에서는 하드 드라이브가 `/dev/sda`로 지정되어 있습니다. 필요에 따라 명령어를 변경해야 합니다.
파티션 백업
dd if=/dev/sda1 | gzip -1 - | ssh [email protected] dd of=image.img.gz
전체 드라이브 백업
dd if=/dev/sda | gzip -1 - | ssh [email protected] dd of=image.img.gz
반대로, 원격 드라이브의 하드 디스크 이미지(또는 파티션)를 로컬로 가져올 수도 있습니다.
파티션 백업
ssh [email protected] "dd if=/dev/sda1 | gzip -1 -" | dd of=image.img.gz
전체 드라이브 백업
ssh [email protected] "dd if=/dev/sda | gzip -1 -" | dd of=image.img.gz
이미지 추출: gzip -d image.img.gz
로컬에서 원격 프로그램 실행
원격으로 컴퓨터에 접근할 때, 터미널만으로는 부족할 때가 있습니다. 다행히 SSH는 X 윈도우 포워딩 기능을 제공합니다. 즉, X11 GUI 서버를 사용하여 원격 창을 로컬 시스템으로 전달할 수 있습니다. 예를 들어, 원격 리눅스 PC에서 웹사이트를 테스트해야 할 경우, Firefox를 원격으로 실행하고 X11 Firefox 창을 로컬 리눅스 PC로 전달할 수 있습니다.
X11 창 전달을 활성화하려면 SSH 설정 파일을 편집합니다: sudo nano /etc/ssh/ssh_config
파일에서 `# ForwardX11 no` 부분을 찾아 ‘#’을 제거하고 ‘no’를 ‘yes’로 변경합니다.
SSH 서비스를 다시 시작합니다.
우분투/데비안:
service ssh restart
아치/오픈수세/페도라:
sudo systemctl sshd restart
SSH로 연결할 때 -X
스위치를 사용합니다:
ssh -X -p 포트번호 [email protected]
결론
SSH는 매우 유용한 도구이지만, 리눅스 초보자들은 그 중요성을 간과하는 경우가 많습니다. SSH는 다양한 용도로 활용될 수 있으며, 본 글에서는 그 일부만 소개했습니다. 보안 쉘을 사용하는 데 있어 유일한 제한은 사용자 본인의 숙련도에 달려있습니다.