SSH 및 SCP · 4 min read · Nov 22, 2025

리눅스에서 로그인 및 데이터 전송을 위한 보안 셸(SSH) 및 안전한 복사(SCP) 사용

SSH는 보안 셸을 의미합니다. 이는 암호화된 원격 로그인 프로토콜입니다. 각 노드에 설정되면 해당 네트워크의 다양한 다른 노드와 통신하는 데 사용할 수 있습니다.

SSH의 주요 이점은 다음과 같습니다:

  • SSH는 RSA 암호화 알고리즘을 사용하여 공개 및 개인 키를 생성하므로 침입이 매우 어렵습니다.
  • SSH는 원격 로그인 프로토콜이므로 노트북에 구성할 수 있습니다. 즉, 노트북을 사용하여 Raspberry Pi 클러스터에 무선으로 연결할 수 있습니다.
  • SCP(안전한 복사) 및 SFTP(안전한 파일 전송 프로토콜)와 같은 프로토콜이 SSH 위에서 실행되므로 파일과 폴더를 한 노드에서 다른 노드로 직접 전송할 수 있습니다.
  • SSH는 일회성 로그인을 지원합니다. 즉, 처음 로그인할 때만 자격 증명을 입력하면 됩니다. 두 번째 로그인부터는 필요하지 않습니다.

SSH 키 생성을 시작해 보겠습니다. SSH를 사용하려면 두 개 이상의 노드 간에 키가 생성되어야 데이터 전송이 이루어질 수 있습니다. 우리는 암호화에 RSA를 사용합니다. 한 노드에서 키를 생성하고 개인 키 또는 비밀 키를 가지게 됩니다. 동일한 노드는 다른 노드에 전송할 공개 키도 생성합니다. 데이터를 전송할 노드에서 다음 명령을 수행하십시오. 이 노드를 “마스터 노드”라고 부르고 다른 노드를 “작업 노드”라고 부릅니다.

cd ~  
ssh-keygen --t rsa --C "raspberrypi@raspberrypi"

이 두 명령은 키를 저장할 기본 위치를 /home/pi/_ssh/id_rsa로 설정합니다.

암호 문구를 요청하면 암호 문구를 비워 두십시오. 이 작업이 완료되면 다음 단계는 공개 키를 작업 노드로 전송하는 것입니다. 따라서 작업 노드가 네트워크에 연결되어 있는지 확인하십시오. 이제 작업 노드에서 암호화 키를 설정할 수 있으므로 사용되는 IP 주소는 작업 노드의 IP 주소입니다. 마스터 노드에서 다음 명령을 실행하십시오.

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir .ssh;cat >> .ssh/authorized_keys"

SSH 키가 생성되면 마스터 노드에서 키가 전송된 다른 노드에 로그인할 수 있으며, 그렇게 하려면 다음 명령을 사용하십시오:

ssh [email protected]

위 명령에서 “pi”는 사용자로, 기본적으로 모든 Raspbian을 사용하는 PI는 사용자가 “pi”이며 “192.168.3.216”은 내 클라이언트의 IP입니다. 이를 클라이언트 PI의 IP 주소를 나타내도록 변경해야 합니다.

이것은 비밀번호를 요청합니다. 로그인하면 입력하는 모든 명령은 해당 노드에서 실행되며 마스터에서는 실행되지 않지만 출력은 마스터 자체에 표시됩니다. SSH는 다른 노드에서 직접 명령을 실행하는 데에도 사용할 수 있습니다. 예를 들어, 다른 노드의 호스트 이름을 변경하려면 아래와 같은 형식으로 이 명령을 사용하십시오:

ssh [email protected] 'sudo echo "cilent001" | sudo nano /etc/hostname'  
ssh [email protected] 'sudo echo "cilent002" | sudo nano /etc/hostname'  
ssh [email protected] 'sudo echo "cilent003" | sudo nano /etc/hostname'

위와 같이 SSH를 사용하여 실제로 로그인하지 않고도 다른 노드/PI에서 명령을 실행할 수 있습니다. 다음은 IP 주소 192.168.3.216의 네트워크에서 노드를 안전하게 종료하는 또 다른 예입니다.

ssh [email protected] 'sudo poweroff'

다음 그림은 SSH가 작업 노드(192.168.3.216)에 로그인하는 데 어떻게 사용되는지 보여주며, 작업 노드에서 마스터 노드로 제어 터미널을 되돌리는 방법을 보여줍니다.

위 그림에서 볼 수 있듯이 작업 노드에 로그인하는 것은 첫 번째 로그인 외에는 비밀번호 입력 없이 직접 이루어집니다. 그러나 터미널의 제어가 마스터 노드(192.168.3.215)로 돌아올 때마다 로그인 자격 증명을 입력해야 합니다. 이렇게 하면 마스터는 항상 외부 위협으로부터 보호됩니다.

따라서 SSH를 통해 다른 노드에 명령을 발행한 후 여러 노드에 데이터를 전송해야 하는 상황이 있을 수 있습니다. 노드 수가 적으면 각 노드에 수동으로 로그인하고 디스플레이 및 키보드에 연결하여 파일을 전송할 수 있습니다. 그러나 클러스터의 크기가 클 때는 이는 매우 비효율적인 방법입니다. 더 쉬운 방법은 SCP를 사용하여 파일을 전송하는 것입니다. 다음 명령을 사용하여 SCP를 설치하십시오:

sudo apt-get install scp

일부 리눅스 OS에는 SCP가 미리 설치되어 있을 수 있지만, 우리가 사용한 Raspbian에는 없었습니다. 단일 파일을 전송하는 일반 명령은 다음과 같습니다:

scp (로컬 장치의 파일 경로) [email protected] (원격 위치의 경로)

예:

scp /pi/example.c [email protected] /pi/project

여기서 데이터를 전송할 원격 장치는 IP 주소로 인식됩니다. 디렉토리의 많은 파일을 전송하려면 재귀 옵션(-R)을 사용할 수 있습니다. 예:

scp -r /pi/project [email protected] /pi/project

위 명령은 로컬 호스트의 /pi/project에 있는 모든 파일을 원격 호스트의 재귀적으로 폴더로 전송합니다. IP 주소로 식별됩니다.

아래 이미지는 다양한 ssh 및 scp 명령을 보여줍니다. 현재 폴더의 내용을 나열한 다음 “scp”를 재귀적으로 호출하여 현재 폴더의 모든 파일을 다른 노드의 폴더로 전송합니다. 그런 다음 다른 노드에 로그인하여 scp가 목적지로 내용을 성공적으로 전송했음을 보여줍니다.

SCP는 전송을 특정 조건에 맞게 조정하기 위해 몇 가지 다른 옵션과 함께 사용할 수 있습니다. 다음은 몇 가지 옵션입니다:

  • “-p” 옵션을 사용하여 원본 파일의 수정 시간, 접근 시간 및 모드를 보존할 수 있습니다. 예: scp -p test.c [email protected]:~/ 여기서 파일 “test.c”의 접근 시간, 접근 모드 및 마지막 수정 시간이 목적지 노드에서도 보존됩니다.
  • SCP는 파일을 전송하기 전에 압축할 수 있습니다. 이는 전송할 파일이 매우 클 때 유용하며, 따라서 압축하면 전송 속도가 증가합니다. 이를 위해 “-C” 옵션을 사용합니다. 예: scp -pC test.c [email protected]:~/ 여기서 여러 옵션을 사용할 수 있으며 두 기능이 모두 명령에 적용됩니다.
  • 소켓 프로그래밍은 포트를 통해 데이터를 전송하고 수신하는 것을 포함하며 SCP는 특정 포트를 통해 원격 호스트로 데이터를 전송하는 데 사용할 수 있습니다. 이는 “-P” 옵션을 사용하여 수행할 수 있습니다. 예: scp -P 21938 test.c [email protected]:~/ 여기서 데이터를 전송하는 데 사용되는 포트는 1938입니다.
  • 파일 전송 상태를 알 필요가 없는 경우가 있을 수 있습니다. 위 이미지와 같이 많은 파일이 있을 때 전송 상태를 끄는 것이 합리적입니다. “-q” 옵션을 사용하여 이를 수행할 수 있습니다. 예:
scp -rq ~/files [email protected]:~/files

여기서 “files”라는 폴더의 내용이 다른 노드의 “files” 폴더로 전송되지만 상태 표시줄과 디버깅 메시지는 모두 비활성화되어 표시되지 않습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.