'Basic Computer Engineering/Basic Linux'에 해당되는 글 6건

  1. [Linux] Directory Tree Structure - Tree
  2. [Linux] 부하테스트 - Stress test tool
  3. [Linux] Iptables Setup Firewall For a Web Server
  4. [Linux] 자동 배치처리 Crontab
  5. [Linux] 파일전송 프로토콜 FTP
  6. [Linux] 원격파일 송수신 Secure Copy (SCP)


디렉토리 구조를 트리 형으로 보여주는 Tree Package

트리 구조로 디렉토리 구조를 보고 싶을 경우, 기존 리눅스에서는 볼 수 없지만 Tree Package를 설치하게 되면 디렉토리를 Tree 구조로 확인 할 수 있습니다.


Tree Package 설치 및 테스트

1) RHEL / CentOS / Fedora Linux

기본적으로 트리 명령은 설치되어 있지 않습니다.

[root@localhost ~]# tree
bash: tree: command not found...

## tree pakcage install
 [root@localhost ~]# yum install tree
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base                                                                                                                                                                                                                                     | 3.6 kB  00:00:00     
extras                                                                                                                                                                                                                                   | 3.4 kB  00:00:00     
mariadb                                                                                                                                                                                                                                  | 1.9 kB  00:00:00     
http://yum.puppetlabs.com/el/7/dependencies/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: yum.puppetlabs.com; Name or service not known"
Trying other mirror.
puppetlabs-devel                                                                                                                                                                                                                         | 2.5 kB  00:00:00     
puppetlabs-products                                                                                                                                                                                                                      | 2.5 kB  00:00:00     
updates                                                                                                                                                                                                                                  | 3.4 kB  00:00:00     
(1/3): extras/7/x86_64/primary_db                                                                                                                                                                                                        |  33 kB  00:00:00     
(2/3): updates/7/x86_64/primary_db                                                                                                                                                                                                       | 4.2 MB  00:00:00     
puppetlabs-products/x86_64/pri FAILED                                                                             99% [====================================================================================================== ]  98 kB/s | 4.2 MB  00:00:00 ETA 
http://yum.puppetlabs.com/el/7/products/x86_64/repodata/c16896632f46758106aca64ff9e1c3f6b2e0cc1b-primary.sqlite.bz2: [Errno -1] Metadata file does not match checksum======================================================== ]  98 kB/s | 4.2 MB  00:00:00 ETA 
Trying other mirror.
mariadb/primary_db                                                                                                                                                                                                                       |  20 kB  00:00:00     
Determining fastest mirrors
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
Resolving Dependencies
--> Running transaction check
---> Package tree.x86_64 0:1.6.0-10.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================================================================================================================================================================================================
 Package                                                    Arch                                                         Version                                                               Repository                                                  Size
================================================================================================================================================================================================================================================================
Installing:
 tree                                                       x86_64                                                       1.6.0-10.el7                                                          base                                                        46 k

Transaction Summary
================================================================================================================================================================================================================================================================
Install  1 Package

Total download size: 46 k
Installed size: 87 k
Is this ok [y/d/N]: y
Downloading packages:
tree-1.6.0-10.el7.x86_64.rpm                                                                                                                                                                                                             |  46 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : tree-1.6.0-10.el7.x86_64                                                                                                                                                                                                                     1/1 
  Verifying  : tree-1.6.0-10.el7.x86_64                                                                                                                                                                                                                     1/1 

Installed:
  tree.x86_64 0:1.6.0-10.el7                                                                                                                                                                                                                                    

Complete!

2) Debian / Mint / Ubuntu Linux

[root@localhost ~]# sudo apt-get install tree
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  tree
0 upgraded, 1 newly installed, 0 to remove and 381 not upgraded.
Need to get 36.7 kB of archives.
After this operation, 112 kB of additional disk space will be used.
Get:1 http://kr.archive.ubuntu.com/ubuntu/ trusty/universe tree i386 1.6.0-1 [36.7 kB]
Fetched 36.7 kB in 0s (102 kB/s)
Selecting previously unselected package tree.
(Reading database ... 169637 files and directories currently installed.)
Preparing to unpack .../archives/tree_1.6.0-1_i386.deb ...
Unpacking tree (1.6.0-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Setting up tree (1.6.0-1) ...

3) 테스트

[root@localhost ~]# tree -L 2 /app
/app
├── batch
├── test_demo
│  ├── webapps
│  └── webhome
├── test_mariadb
│  ├── webapps
│  └── webhome
├── test_monitoring
│  ├── webapps
│  └── webhome
└── tomcat
    ├── bin
    ├── conf
    ├── lib
    ├── LICENSE
    ├── logs
    ├── NOTICE
    ├── RELEASE-NOTES
    ├── RUNNING.txt
    ├── temp
    ├── webapps
    └── work

4) Syntax

tree
tree /path/to/directory
tree [options]
tree [options] /path/to/directory


저작자 표시 비영리 동일 조건 변경 허락
신고


시스템 하드웨어 부하 테스트 Stress tool

서버를 구성하고 이 서버의 자원이 얼마나 버터주는지 궁금할 경우 시스템 하드웨어 부하 테스트 툴인 Stress tool을 설치하여 간단히 테스트할 수 있습니다. 예를 들어, connect session이 과다할 경우, memory 자원이 남아 있지 않을 경우 등에 대비하여 어느 Max 값 까지 버텨 주는지 확인 할 수 있습니다.


Stress tool 설치 및 테스트

1) Stress tool 설치

해당 툴은 홈페이지(http://pkgs.repoforge.org/stress/)를 통해서 설치 가능하고, 네트워크가 되는 Linux 상에서 바로 설치도 가능합니다.

login as: root
root@54.64.51.32's password:
Last login: Thu Aug 28 11:42:59 2014 from 112.220.205.115

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2014.03-release-notes/
9 package(s) needed for security, out of 28 available
Run "sudo yum update" to apply all updates.

## 설치 폴더로 이동
[root@ip-172-31-4-233 ~]# cd download/

## 해당 운영체제의 Bit수 확인
[root@ip-172-31-4-233 download]# getconf LONG_BIT
64

## Stress tool download
[root@ip-172-31-4-233 download]# wget http://pkgs.repoforge.org/stress/stress-1.0.2-1.el6.rf.x86_64.rpm
--2014-08-28 11:44:55--  http://pkgs.repoforge.org/stress/stress-1.0.2-1.el6.rf.x86_64.rpm
Resolving pkgs.repoforge.org (pkgs.repoforge.org)... 78.46.17.228
Connecting to pkgs.repoforge.org (pkgs.repoforge.org)|78.46.17.228|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://rpmforge.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/stress-1.0.2-1.el6.rf.x86_64.rpm [following]
--2014-08-28 11:44:56--  http://rpmforge.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/stress-1.0.2-1.el6.rf.x86_64.rpm
Resolving rpmforge.sw.be (rpmforge.sw.be)... 78.46.17.228
Connecting to rpmforge.sw.be (rpmforge.sw.be)|78.46.17.228|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://tree.repoforge.org/redhat/el6/en/x86_64/rpmforge/RPMS/stress-1.0.2-1.el6.rf.x86_64.rpm [following]
--2014-08-28 11:44:57--  http://tree.repoforge.org/redhat/el6/en/x86_64/rpmforge/RPMS/stress-1.0.2-1.el6.rf.x86_64.rpm
Resolving tree.repoforge.org (tree.repoforge.org)... 78.46.17.228
Connecting to tree.repoforge.org (tree.repoforge.org)|78.46.17.228|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/stress-1.0.2-1.el6.rf.x86_64.rpm [following]
--2014-08-28 11:44:58--  http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/stress-1.0.2-1.el6.rf.x86_64.rpm
Resolving apt.sw.be (apt.sw.be)... 193.1.193.67
Connecting to apt.sw.be (apt.sw.be)|193.1.193.67|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 36780 (36K) [application/x-redhat-package-manager]
Saving to: ?쁲tress-1.0.2-1.el6.rf.x86_64.rpm.1??

100%[======================================>] 36,780      25.8KB/s   in 1.4s

2014-08-28 11:45:01 (25.8 KB/s) - ?쁲tress-1.0.2-1.el6.rf.x86_64.rpm.1??saved [36780/36780]

## Stress tool install
[root@ip-172-31-4-233 download]# rpm -Uvh stress-1.0.2-1.el6.rf.x86_64.rpm
warning: stress-1.0.2-1.el6.rf.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
Preparing...                          ################################# [100%]
        package stress-1.0.2-1.el6.rf.x86_64 is already installed

2) Stress tool 사용

아래와 같이 사용합니다.

## 포그라운드로 실행
[root@ip-172-31-4-233 ~]# stress --cpu 2 --io 4 --vm 2 --hdd 1 --timeout 10s
stress: info: [18712] dispatching hogs: 2 cpu, 4 io, 2 vm, 1 hdd
stress: info: [18712] successful run completed in 12s

## 백그라운드로 실행
[root@ip-172-31-4-233 ~]# stress --cpu 2 --io 4 --vm 2 --hdd 1 --timeout 10s &
[1] 18723
[root@ip-172-31-4-233 ~]# stress: info: [18723] dispatching hogs: 2 cpu, 4 io, 2 vm, 1 hdd
stress: info: [18723] successful run completed in 13s

[1]+  Done                    stress --cpu 2 --io 4 --vm 2 --hdd 1 --timeout 10s



저작자 표시 비영리 동일 조건 변경 허락
신고


Iptables ?

CentOS 에 아파치 웹서버가 존재한다고 가정합니다.

이 웹서버를 어떻게 액세스를 허용하거나, 차단하는 방화벽을 구성하기 위해서 어떻게 해야 할까요?

CentOS, RHEL에서는 기본 HTTP (TCP 포트 번호 80)와 HTTPS (TCP 포트 번호 443)는 아파치 웹 서버에서 사용하는 포트에 대한 액세스를 허용하지 않습니다. 


다음 세 가지 방법 중 하나를 이용하여 설정을 수정할 수 있습니다.


Method # 1: Edit /etc/sysconfig/iptables file (recommend for advanced users)

$ crontab -l
## Edit the IPv4 /etc/sysconfig/iptables, enter:
vi /etc/sysconfig/iptables

## Add the following lines, ensuring that they appear before the final LOG and DROP lines for INPUT chain:

## allow everyone to access port 80 and 443 (IPv4 Only)##
-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
 
## Save and close the file. Restart the IPv4 iptables service:
service iptables start

## Edit the IPv6 /etc/sysconfig/ip6tables, enter:
vi /etc/sysconfig/ip6tables

## Add the following lines, ensuring that they appear before the final LOG and DROP lines for INPUT chain:

## allow everyone to access port 80 and 443 (IPv6 Only)##
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
 
## Save and close the file. Restart the IPv6 iptables service:
service ip6tables restart


Method # 2: Firewall configuration GUI/TUI tool (recommend for new users)

system-config-firewall 명령은 기본 방화벽 규칙을 설정하기위한 그래픽 사용자 인터페이스입니다. 

사용자는 KDE 나 GNOME 시스템에 설치되어 있어야합니다. 

터미널을 열고 root 사용자로 다음 명령을 입력합니다.

# system-config-firewall


Fig.01: GUI tool in action



WWW, SSH, HTTPS 등의 서비스를 선택하고 [적용] 버튼을 클릭하여 적용합니다. 

다음과 같이이 도구는 /etc/sysconfig/iptables에 생성됩니다.


Sample RHEL CentOS Linux /etc/sysconfig/iptables files


A note about text based config tool (recommend for remote server with ssh access)

# system-config-firewall-tui

Fig.02: system-config-firewall-tui in action


Enabled를 선택하고 Tab 키를 눌러 "사용자 정의"를 선택합니다.


Fig.03: Opening a port 80


업/다운하여 SSH, WWW 보안 WWW (HTTPS)에 필요한 포트를 선택하고, [닫기] 버튼을 선택합니다. 

마지막으로, 새로운 방화벽 설정을 활성화하고 [OK] 버튼을 누릅니다.



Method # 3: /sbin/iptables command line utility (recommend for advanced/expert users only)

## Type the following iptables command as root user to open port 80 / 443:
## open port 80 and 443 for everyone ##
/sbin/iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
 
## save newly added firewall rules ##
/sbin/service iptables save
 
## verify new firewall settings 
/sbin/iptables -L -n -v
/sbin/iptables -L INPUT -n -v
/sbin/iptables -L INPUT -n -v | grep :80
/sbin/iptables -L INPUT -n -v | grep :443
 
The following rule allows access to port 80 and 443 only to 192.168.1.0/24

## Find an appropriate network block, and network mask
## representing the machines on your network which should operate as 
## clients of the Apache Web-server 
 
## Open port 80 and 443 for 192.168.1.0/24 subnet only ##
/sbin/iptables -A INPUT -s 192.168.1.0/24  -m state --state NEW -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 443 -j ACCEPT
 
## save newly added firewall rules ##
/sbin/service iptables save
 
## verify new firewall settings 
/sbin/iptables -L -n -v
/sbin/iptables -L INPUT -n -v
/sbin/iptables -L INPUT -n -v | grep :80
/sbin/iptables -L INPUT -n -v | grep :443
 
You can block/drop the IP address 202.54.1.1 or subnet 202.54.1.2/29 as follows using iptables:

## Block access to port 80 ##
iptables -A INPUT -s 202.54.1.1 -p tcp --dport 80 -j DROP
iptables -A INPUT -s 202.54.1.2/29 -p tcp --dport 80 -j DROP
 
## block and drop access to port 443 (secure apache web-server)
iptables -A INPUT -s 202.54.1.1 -p tcp --dport 443 -j DROP
iptables -A INPUT -s 202.54.1.2/29 -p tcp --dport 443 -j DROP
 
## save newly added firewall rules ##
/sbin/service iptables save
 
## verify new firewall settings 
/sbin/iptables -L -n -v
/sbin/iptables -L INPUT -n -v | grep 202.54.1.1
 
Note: To unblock an IP i.e. delete the IP address 202.54.1.1 listed in iptables type the following command:
iptables -D INPUT -s 202.54.1.1 -j DROP


저작자 표시 비영리 동일 조건 변경 허락
신고


Crontab ?

Crontab이란 Cron(크론)을 원하는 시간에 주기적으로 어떤 프로그램(명령)을 시키기 위한 데몬입니다.

이 때 주기적으로 수행되어질 프로그램은 "/usr/spool/cron/crontabs" 디렉토리 아래 각 사용자의 사용자명과 동일하게 파일이 생성됩니다.

예를 들어, 매일 새벽 1시의 주기적인 백업을 받아야 한다거나, 매주 일요일 새벽에 데이터 가공을 해야할 작업이 있을 경우, cron을 이용하여 손쉽게 해결할 수 있습니다.


Crontab 설정

1) crontab 파일 위치 및 조회

crontab 파일은 OS별로 약간의 차이가 있습니다.

Linux 경우에는 /var/spool/cron/ID, Solaris의 경우에는 /var/spool/cron/crontabs/ID에 위치합니다.


아래와 같이 crontab 명령을 통해 설정 내용을 조회할 수 있습니다.

$ crontab -l
10 3 * * * /usr/sbin/logadm (1)
15 3 * * 0 /usr/lib/fs/nfs/nfsfind (2)
1  2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1 (3)
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean (4)

(1) 매일 오전 3:10에 logadm명령을 실행합니다.

(2) 매주 일요일 오전 3:15에 nfsfind 스크립트를 실행합니다.

(3) 매일 오전 2:10 일광 절약 시간을 검사하는 스크립트를 실행합니다.

(4) 매일 오전 3:30에 일반 보안 서비스 테이블 /etc/gss/gsscred_db에서 중복 항목을 검사하고 제거합니다.

2) crontab 파일 형식

crontab 설정 형식은 "분 시 일 월 요일 실행명령" 순으로 설정할 수 있습니다.

------    --------  ---------------------------------------------------
필  드      의  미     범  위
------    --------  ---------------------------------------------------
첫번째      분         0-59
두번째      시         0-23
세번째      일         0-31
네번째      월         1-12
다섯번째    요일       0-7 (0 또는 7=일요일, 1=월, 2=화,...) 
여섯번째    명령어     실행할 명령을 한줄로 쓴다.
------    --------  ---------------------------------------------------

3) crontab 파일 설정

crontab 파일을 만드는 방법은 아래 명령을 사용하면 됩니다.

$ crontab -l root  : /var/spool/cron/crontabs/root 내용 display
$ crontab -e root  :
           (이 명령을 root가 수행했으면 /var/spool/cron/crontabs/DIR 하위에 "root" 라는 이름의 화일이 생성됩니다.)
           또는 vi 로 편집

vi 명령어를 통하여 설정하기 위해서는 중요 몇 가지 방법을 알아야 합니다.

----  -----------------------------------------------------------------------------
키    의미
----  -----------------------------------------------------------------------------
i     현재 칸에 글을 넣는다.
o     다음줄에 글을 넣는다.
dd    한줄을 삭제한다.
:wq   저장하고 빠져나온다.
ESC   설정중에 명령어 모드(위의 i, o, dd 등을 사용할 수 있는 상태)로 빠져 나온다.
----  -----------------------------------------------------------------------------

4) crontab 파일 삭제

root 또는 다른 사용자에 속하는 crontab 파일을 제거하려면 수퍼유저 또는 동등한 역할의 사용자여야 합니다. 역할에는 권한 부여 및 권한이 있는 명령이 포함됩니다.

자신의 crontab 파일을 제거하기 위해 수퍼유저 또는 동등한 역할의 사용자일 필요는 없습니다.

# crontab 파일을 제거합니다.
# 여기서 username은 crontab 파일을 제거할 사용자 계정의 이름을 지정합니다. 다른 사용자의 crontab 파일을 제거하려면 수퍼유저 권한이 필요합니다.

$ crontab -r [username]

# crontab 파일이 제거되었는지 확인합니다.
$ ls /var/spool/cron/crontabs

5) crontab 명령에 대한 엑세스 제어

/etc/cron.d 디렉토리의 두 파일 cron.deny 및 cron.allow를 사용하여 crontab 명령에 대한 액세스를 제어할 수 있습니다. 

이러한 파일은 지정된 사용자만 자신의 crontab 파일 만들기, 편집, 표시, 제거와 같은 crontab 명령 작업을 수행하도록 허용합니다.


/etc/cron.allow : 허부할 사용자 ID 목록

/etc/cron.deny  : 거부할 사용자 ID 목록

# 기본 cron.deny 파일의 사용자 이름 중 아무도 crontab 명령에 액세스할 수 없습니다. 
# 이 파일을 편집하여 crontab 명령에 액세스가 거부될 다른 사용자 이름을 추가할 수 있습니다.
# 기본 cron.allow 파일은 제공되지 않습니다. 
# 그래서 Oracle Solaris 소프트웨어 설치 후에 모든 사용자(기본 cron.deny 파일에 나열된 사용자 제외)가 crontab 명령에 액세스할 수 있습니다. 
# cron.allow 파일을 만들면 이러한 사용자만 crontab 명령에 액세스할 수 있습니다.

$ cat /etc/cron.d/cron.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess

6) crontab 시작 및 실행 확인

# crontab prcoess 실행 및 정지
$ /etc/rc.d/init.d/crond start{restart | stop}

# crontab process 확인
$ ps -ef | grep crond

저작자 표시 비영리 동일 조건 변경 허락
신고


FTP ?

FTP(File Transfer Protocol) 이란 원격 서버 사이에 파일을 교환하기 위한 TCP/IP 표준 인터넷 규약입니다.

FTP를 통하면 웹페이지에(의) 파일을 쉽게 업로드 할 수 있습니다. 원격 서버에 허가된 사용자들을 FTP 계정이라 부르며, 이런 용도의 서버들을 FTP 서버라고 지칭합니다.

FTP 서버에 로그인을 해야 하지만, Anonymous FTP를 사용하여 모든 사람에게 공개된 파일을 쉽게 접근 할 수도 있습니다.

FTP는 Server와 Client 로 나뉘는데, Server는 TCP 21 Port를 사용하고 Listen 상태이며, 자신에게로 오는 FTP Client의 요청을 항상 준비하고 있습니다.


Linux에 설치된 FTP 설정정보 확인

그렇다면, Linux 서버에 FTP가 설정되어 있는지를 어떻게 알 수 있을까요? 

대부분 많이 사용되는 FTP로는 VSFTP, PROFTP가 있습니다. FTP가 설치되어 있는지 확인하는 방법은 아래와 같습니다.


1. RPM으로 설치되어 있을 경우

$ rpm -qa | grep proftp
$ rpm -qa | grep vsftp

2. RPM이 아닌 소스 설치의 경우

$ ps -ef | grep ftp

FTP의 기본 설정파일은 특정 경로를 지정하지 않을 경우 대부분, /etc 아래에 ~.d 파일로 저장됩니다.


Port 확인

1. 기본적인 VSFTP Port 확인

$ netstat -vatn # 21번 port 확인
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:32769               0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:113                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 :::7777                     :::*                        LISTEN      
tcp        0      0 :::7778                     :::*                        LISTEN      
tcp        0      0 :::7779                     :::*                        LISTEN      
tcp        0      0 :::80                       :::*                        LISTEN      
tcp        0      0 :::8080                     :::*                        LISTEN      
tcp        0      0 :::8888                     :::*                        LISTEN      
tcp        0      0 :::28                       :::*                        LISTEN      
tcp        0    528 ::ffff:172.16.83.173:28     ::ffff:172.16.83.185:63011  ESTABLISHED 
tcp        0      0 ::ffff:172.16.83.173:28     ::ffff:172.16.83.171:57144  ESTABLISHED

2. 전체 FTP Port 확인

$ grep ftp /etc/services # FTP를 포함하는 Port
ftp-data                20/tcp          # File Transfer [Default Data]
ftp-data                20/udp          # File Transfer [Default Data]
ftp                     21/tcp          # File Transfer [Control]
ftp                     21/udp          # File Transfer [Control]
ni-ftp                  47/tcp          # NI FTP
ni-ftp                  47/udp          # NI FTP
tftp                    69/udp          # Trivial File Transfer
tftp                    69/tcp          # Trivial File Transfer
sftp                    115/tcp         # Simple File Transfer Protocol
sftp                    115/udp         # Simple File Transfer Protocol
bftp                    152/tcp         # Background File Transfer Program
bftp                    152/udp         # Background File Transfer Program
softpc                  215/tcp         # Insignia Solutions
softpc                  215/udp         # Insignia Solutions
subntbcst_tftp  247/tcp                 # SUBNTBCST_TFTP
subntbcst_tftp  247/udp                 # SUBNTBCST_TFTP
mftp                    349/tcp         # mftp
mftp                    349/udp         # mftp
ftp-agent               574/tcp         # FTP Software Agent System
ftp-agent               574/udp         # FTP Software Agent System
pftp                    662/tcp         # PFTP
pftp                    662/udp         # PFTP
ftps-data               989/tcp         # ftp protocol, data, over TLS/SSL
ftps-data               989/udp         # ftp protocol, data, over TLS/SSL
ftps                    990/tcp         # ftp protocol, control, over TLS/SSL
ftps                    990/udp         # ftp protocol, control, over TLS/SSL

저작자 표시 비영리 동일 조건 변경 허락
신고


Secure Copy(SCP) ?

개발서버, 실 서버에서(Remote) 필요한 파일(문서) 등을 내려 받을(Local) 때나, 업로드 할 때 흔히들 FTP, SFTP등을 사용합니다.

하지만, SSH를 통해서 SCP 명령으로 안전하고 간단하게 파일을 업로드 가능합니다.

SCP는 Secure Copy의 약자로, SSH를 설치하면 같이 설치되는 프로그램으로, 별도의 FTP 클라이언트를 설치하지 않더라도, 파일 송수신이 가능하며 데이터 암호화까지 가능한 유용한 툴입니다.


Remote 서버에서 Local 서버로 파일 내려받기

Remote 서버의 /home/oracle/test.txt 파일을 Local /home/oracle 디렉토리 아래로 내려 받는 명령어입니다.

$ scp root@133.42.2.1:/home/oracle/test.txt /home/oracle/

-P 옵션을 사용하지 않으면, 기본적인 SSH 22번 포트를 사용하게 됩니다.


Local 서버에서 Remote 서버로 파일 올리기

Local 서버의 /home/oracle/test2.txt 파일을 Remote 서버의 oracle2 유저로 로그인 한 후 /home/oracle2/ 디렉토리 아래로 로 전송하는 명령어입니다.

$ scp /home/oracle/test2.txt oracle2@133.42.2.1:/home/oracle2

내려받기와 동일하게 -P 옵션을 사용하지 않으면, 기본 SSH 22번 포트를 사용합니다.


SSH 포트를 기본 22번으로 사용하고 있지 않는 서버로의 전송

SSH 22번 포트를 1234 포트를 사용한다면 아래와 같이 -P 옵션과 포트 번호를 적어준다.

$ scp -P root@133.42.2.1:/home/oracle/test.txt /home/oracle/
$ scp -P 1234 root@133.42.2.1:/home/oracle/test.txt /home/oracle/


주의사항

옵션중에 -P와 -p 를 구분하여 사용합니다.

-P : 포트 번호를 지정합니다.

-p : 원본 파일을 수정/사용시간 및 권한을 유지합니다.

-r : 하위 디렉토리 및 파일을 모두 복사합니다.

저작자 표시 비영리 동일 조건 변경 허락
신고