SSH & SFTP

Sunwoo Pi·2023년 6월 11일
0
post-thumbnail

SSH(Secure Shell) 연결 및 연결 종료

ssh -p [PORT] [USER]@[HOSTNAME]
exit

ssh -p 8001 psw@230.238.22.132 # SSH 연결

exit # 연결 종료

# -p : Port 번호
# -p를 명시하지 않는다면 Default Port 22가 적용
# -X : X11 Forwarding 허용
# -C : 압축 활성화 (Data 전송 시간 단축)

SSH Config 설정을 통해 SSH 연결을 편하게.

SSH Config File 위치

Windows

C:\사용자\[User]\.ssh\config

Linux & MacOS

/Users/[User]/.ssh/config

SSH Config File 형식

Host [Name]
    User [HostName]
    User [User]
    Port [Port 번호]

Host MyFirstServer
    HostName 230.238.22.132
    User psw
    Port 8001
    
Host MySecondServer
    HostName 201.223.14.247
    User psw
    Port 8001

SSH 연결

ssh [Name]

ssh MyFirstServer

SFTP(SSH File Transfer Protocol)를 이용한 File 전송

구형 SCP(Secure Copy)보다 더 유연하고 개선된 File 전송 방식

1. 전송할 File이 있는 or 전송 받은 File을 위치 시킬 Directory로 Local의 위치 이동

cd /path/to/Dir1 # Local의 위치 이동

2. File을 전송할 Remote Server와의 SFTP 연결 및 연결 종료

sftp -oPort=8001 psw@230.238.22.132 # sftp로 Remote에 연결 된 경우 Terminal의 상태가 "sftp>"로 변경
sftp MySecondServer # SSH Config를 이용한 SFTP 연결

sftp> exit # sftp 연결 종료
# File을 주고 받을 장소가 Remote와 Remote인 경우
ssh MyFirstServer # Remote에 SSH 연결
cd ~/psw/Dir1 # Remote의 위치 이동 후 
sftp MySecondServer # 2번째 Remote와 sftp 연결

3. Remote Server의 위치 이동

# 대부분의 POSIX 계열 Command를 그대로 사용 가능
sftp> ls # Dir1, Dir2
sftp> cd Dir2
sftp> ls # ETC
sftp> cd ETC # Remote의 위치 이동
sftp> pwd # Remote working directory: /home/psw/Dir2/ETC

4. File 전송

Local의 home/psw/Dir1 위치와 Remote의 /home/psw/Dir2/ETC 위치에서 서로 File을 주고 받을 수 있는 상태

sftp> put practice.py # Local의 home/psw/Dir1에 위치한 practice.py를 MySecondServer의 /home/psw/Dir2/ETC 위치로 전송
sftp> put practice.py /home/psw/Dir6/ # Local의 home/psw/Dir1에 위치한 practice.py를 MySecondServer의 /home/psw/Dir6 위치로 전송 (전송 장소 직접 명시 가능)

sftp> put practice.py hello.py # Local의 home/psw/Dir1에 위치한 practice.py를 MySecondServer의 /home/psw/Dir2/ETC 위치로 hello.py라는 이름으로 전송
sftp> put -r LocalSampleDir # Local의 home/psw/Dir1에 위치한 LocalSampleDir Directory를 MySecondServer의 /home/psw/Dir2/ETC 위치로 전송

# mput을 통해 2개 이상의 File 전송 가능 (Directory는 불가능)
sftp> mput practice.py hello.py # practice.py, hello.py 두 File을 모두 Local to MySecondServer로 전송
sftp> get sample.py # MySecondServer의 /home/psw/Dir2/ETC에 위치한 sample.py를 Local의 home/psw/Dir1 위치로 전송
sftp> get sample.py /home/psw/Dir5/ # MySecondServer의 /home/psw/Dir2/ETC에 위치한 sample.py를 Local의 home/psw/Dir5 위치로 전송 (전송 장소 직접 명시 가능)

sftp> get sample.py bye.py # MySecondServer의 /home/psw/Dir2/ETC에 위치한 sample.py를 Local의 home/psw/Dir1 위치로 bye.py라는 이름으로 전송
sftp> get -r RemoteSampleDir # MySecondServer의 /home/psw/Dir2/ETC에 위치한 RemoteSampleDir를 Local의 home/psw/Dir1 위치로 전송

# mget을 통해 2개 이상의 File 전송 가능 (Directory는 불가능)
sftp> mget sample.py bye.py # sample.py, hello.py 두 File을 모두 MySecondServer to Local로 전송

SSH Key를 통해 비밀번호 없이 SSH 접속하기.

매번 SSH를 접속 할 때, 비밀번호 입력하는 것을 생략하기 위해 SSH로 접속하려는 Server에 공개키를 등록할 수 있습니다.

SSH Key 발급

# Local의 Terminal 이용

ssh-keygen -t rsa

다음 명령어를 통해 현재 Local에서 SSH Key를 발급 받을 수 있습니다.

  1. Key 저장 경로 (Default : $HOME/.ssh/id_rsa)
  2. passphrase (추가로 사용할 암호, Default : 없음)
  3. passphrase 재확인

보통 Default로 그대로 두기 위해 공백 상태에서 Enter를 쳐서 모든 단계를 넘깁니다.
그러면 위의 SSH Config File이 있는 위치에 Key가 발급됩니다.

SSH Key를 Server에 등록

발급된 공개키인 id_rsa.pub의 내용을 복사하여 Server에 등록해줍니다.

  1. $Home에 .ssh Directory를 생성해줍니다. (이미 있다면 생략 가능)
mkdir ~/.ssh
  1. 만든 Directory 내에 autorized_keys File을 생성해줍니다. (이미 있다면 생략 가능)
touch ~/.ssh/authorized_keys
  1. 발급된 Local의 공개키인 id_rsa.pub의 내용을 복사하여 Server의 authorized_keys에 붙여 넣어줍니다. vim이나 nano 혹은 VSCode의 Text Editor 이용 가능.
    (id_rsa.pub이 열리지 않을 경우, 연결 프로그램을 메모장으로 선택)
profile
어려운 게 제일 싫어😝

0개의 댓글