Chapter 12. 원격접속과 FTP
00. 개요 01. 텔넷과 SSH 02. VNC 03. 파일송수신
텔넷서버를설치하고설정할수있다. 슈퍼데몬 (xinetd) 의역할을이해하고설정할수있다. 텔넷클라이언트를이용해리눅스시스템에원격에서접속하여작업할수있다. SSH로원격에서접속하여작업할수있다. VNC를설치하고설정하여윈도에서 VNC로접속할수있다. FTP 서버를설치하고설정할수있다. vsftpd 서버를슈퍼데몬방식으로설정할수있다. vsftpd 서버를독자형으로설정할수있다. FTP 클라이언트로 FTP 서버에접속하여파일을주고받을수있다.
리눅스실습스터디맵
00 개요 [ 그림 12-1] 12 장의내용구성
01 텔넷과 SSH 텔넷 텔넷 (Telnet) 은원격에서리눅스에접속하는프로그램의이름이기도하지만원래는프로토콜의이름 텔넷을사용하려면텔넷클라이언트와텔넷서버가필요 텔넷클라이언트와텔넷서버가설치되어있는지확인 [root@localhost ~]# rpm -qa grep telnet telnet-0.17-56.fc19.x86_64 [root@localhost ~]# 페도라 19 에서텔넷서버설치 페도라 19 에서는텔넷서버가 xinetd 와상관없이 systemd 데몬에의해독자적으로동작 [root@localhost ~]# yum install telnet-server Loaded plugins: langpacks, refresh-packagekit Resolving Dependencies Running transaction check ( 생략 ) Installed: telnet-server.x86_64 1:0.17-56.fc19 Complete! [root@localhost ~]#
01 텔넷과 SSH 텔넷서버활성화하기 페도라 19 에서텔넷서버는 systemd 에의해독자적으로동작하는데몬이므로 systemctl 명령으로텔넷서버를활성화 [root@localhost ~]# systemctl start telnet.socket [root@localhost ~]# 텔넷사용하기 페도라 19 에서는텔넷으로로컬호스트에접속할경우다음과같이바로접속을허용 [root@localhost ~]# telnet 0 Trying 0.0.0.0... Connected to 0. Escape character is '^]'. Fedora release 19 (Schr?dinger s Cat) Kernel 3.11.2-201.fc19.x86_64 on an x86_64 (3) localhost login: 필요시방화벽설정 GUI 도구로방화벽설정 : firewall-config 명령으로설정 : firewall-cmd --add-service=telnet
01 텔넷과 SSH 텔넷사용법 1 텔넷모드사용 : 텔넷을인자없이사용하면다음과같이 > 프롬프트가뜨면서텔넷모드로전환된다. [root@localhost ~]# telnet telnet> 여기서 open 명령을사용하여리눅스시스템에접속하거나, quit 명령을사용하여텔넷을종료 [root@localhost ~]# telnet telnet> open 192.168.0.13 Trying 192.168.0.13... Connected to 192.168.0.13. Escape character is '^]'. Fedora release 19 (Schr?dinger s Cat) Kernel 3.11.2-201.fc19.x86_64 on an x86_64 (3) localhost login:
01 텔넷과 SSH 텔넷사용법 2 직접서버로접속 : 텔넷에인자로접속할서버의주소나호스트이름을지정하면바로해당시스템에접속 [root@localhost ~]# telnet localhost Trying ::1... Connected to localhost. Escape character is '^]'. Fedora release 19 (Schr?dinger s Cat) Kernel 3.11.2-201.fc19.x86_64 on an x86_64 (3) localhost login: 주소로접속 [root@localhost ~]# telnet 192.168.0.13 Trying 192.168.0.13... Connected to 192.168.0.13. Escape character is '^]'. Fedora release 19 (Schr?dinger s Cat) Kernel 3.11.2-201.fc19.x86_64 on an x86_64 (3) localhost login:
01 텔넷과 SSH 윈도에서텔넷사용하기 윈도에서제공하는텔넷클라이언트를이용하거나 한글 putty 같은별도의프로그램을이용 윈도텔넷사용하기 윈도에서는텔넷클라이언트를제공하지만기본적으로설정되어있지는않음 제어판 프로그램및기능 에서 Windows 기능사용 / 사용안함 을선택 Windows 기능 창이뜨는데, 여기서 텔넷클라이언트 를선택하고 확인 을클릭 [ 그림 12-3] Windows 기능사용 / 사용안함창
01 텔넷과 SSH 윈도텔넷클라이언트실행 시작 프로그램및파일검색 에서 telnet 을실행 [ 그림 12-4] 윈도텔넷창 [ 그림 12-4] 텔넷에서접속할주소지정 [ 그림 12-5] 텔넷로그인화면
02 네트워크설정 호스트이름설정하기 hostname 명령 hostname 명령으로호스트이름을검색 [user1@localhost ~]$ hostname localhost.localdomain [user1@localhost ~]$ hostname 명령으로호스트이름을설정 : root 권한필요 [user1@localhost ~]$ su - 암호 : [root@localhost ~]# hostname mail.han.server [root@localhost ~]# hostname mail.han.server [root@localhost ~]#
01 텔넷과 SSH iputty 사용하기 iputty는전용원격접속프로그램인 putty가한글화된버전 iputty는문자집합을선택할수있으므로윈도텔넷처럼한글이깨져보이는현상해결가능 iputty는 http://bitbucket.org/daybreaker/iputty/downloads에서다운가능 putty.exe가있는데이파일을실행 : 호스트이름이나 IP 주소를입력하고, 접속형식에서 Telnet 을선택 [ 그림 12-6] iputty 접속창
01 텔넷과 SSH SSH(Secure SHELL) 텔넷클라이언트와리눅스사이에주고받는데이터가암호화되지않는다는단점 SSH 는텔넷처럼원격에서시스템에접속할수있도록하지만모든통신을암호화 페도라 19 에서는 SSH 데몬이기본으로동작하며 ssh 클라이언트도제공 [root@localhost ~]# rpm -qa grep ssh openssh-server-6.2p2-5.fc19.x86_64 openssh-6.2p2-5.fc19.x86_64 libssh2-1.4.3-4.fc19.x86_64 openssh-clients-6.2p2-5.fc19.x86_64 [root@localhost ~]# SSH 로처음접속하면암호화기법인 RSA 를사용한인증키를생성할것인지를물어보는데, 이때 yes 를입력하면접속 [root@localhost.ssh]# ssh 192.168.0.13 The authenticity of host '192.168.0.13 (192.168.0.13)' can't be established. RSA key fingerprint is 5a:23:bd:da:aa:aa:bf:d8:b2:04:e6:6b:62:1e:2b:57. Are you sure you want to continue connecting (yes/no)?
01 텔넷과 SSH SSH(Secure SHELL) 윈도에서 SSH 로리눅스에접속하려면 iputty 를사용 : 설정창에서접속형식으로 SSH 를선택 [ 그림 12-7] iputty 롤사용한 SSH 접속화면 [ 그림 12-6] iputty 롤 SSH 접속
02 VNC 원격에서는그래픽환경으로접속 : VNC VNC 서버설치하기 : tigervnc-server [root@localhost ~]# yum -y install tigervnc-server ( 생략 ) Transaction Summary =============================================================================== Install 1 Package (+2 Dependent packages) Total download size: 1.2 M Installed size: 2.8 M Downloading packages: (1/3): tigervnc-license-1.3.0-7.fc19.noarch.rpm 24 kb 00:03 (2/3): tigervnc-server-1.3.0-7.fc19.x86_64.rpm 196 kb 00:00 (3/3): tigervnc-server-minimal-1.3.0-7.fc19.x86_64.rpm 977 kb 00:00 -------------------------------------------------------------------------------- Total 174 kb/s 1.2 MB 00:06 ( 생략 ) Installed: tigervnc-server.x86_64 0:1.3.0-7.fc19 Dependency Installed: tigervnc-license.noarch 0:1.3.0-7.fc19 tigervnc-server-minimal.x86_64 0:1.3.0-7.fc19 Complete! [root@localhost ~]#
02 VNC VNC 서버설정하기 1 VNC 를사용하려는사용자계정으로전환한다음 vncpasswd 명령으로 VNC 접속시사용할암호를지정 [user1@localhost ~]$ vncpasswd Password: Verify: [user1@localhost ~]$ ls.vnc passwd [user1@localhost ~]$ 2 vncpaswd 명령으로암호를생성하면사용자홈디렉터리에.vnc 디렉터리를만들고여기에 passwd 파일을생성하여암호를저장 vncserver 를일단동작 vncserver 를실행할때는디스플레이번호를지정하는데 1, 2, 3 등임의로지정 -> vncserver :1 [user1@localhost ~]$ vncserver :1 New 'localhost.localdomain:1 (user1)' desktop is localhost.localdomain:1 Creating default startup script /home/user1/.vnc/xstartup Starting applications specified in /home/user1/.vnc/xstartup Log file is /home/user1/.vnc/localhost.localdomain:1.log [user1@localhost ~]$ ls.vnc localhost.localdomain:1.log localhost.localdomain:1.pid passwd xstartup* [user1@localhost ~]$
02 VNC VNC 서버설정하기 3 xstartup 파일을열어내용수정 [user1@localhost ~]$ vi.vnc/xstartup ( 생략 ) xsetroot -solid grey #xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & # 를추가한다. #twm & # 를추가한다. exec gnome-session & 내용을추가한다. :wq [user1@localhost ~]$ 4 vncserver 를종료했다가다시동작시킴 : 화면의해상도와픽셀의비트수를지정 [user1@localhost ~]$ vncserver -kill :1 Killing Xvnc process ID 20405 [user1@localhost ~]$ [user1@localhost ~]$ vncserver :1 -geometry 800x600 -depth 24 New 'localhost.localdomain:1 (user1)' desktop is localhost.localdomain:1 Starting applications specified in /home/user1/.vnc/xstartup Log file is /home/user1/.vnc/localhost.localdomain:1.log [user1@localhost ~]$
02 VNC VNC 서버설정하기 5 방화벽열기 : 5900 번대포트를사용, 5901 과 5902 를등록 [user1@localhost ~]$ su - 암호 : [root@localhost ~]# firewall-cmd --add-port=5901/udp success [root@localhost ~]# firewall-cmd --add-port=5901/tcp success [root@localhost ~]# firewall-cmd --add-port=5902/udp success [root@localhost ~]# firewall-cmd --add-port=5902/tcp success [root@localhost ~]# firewall-cmd --list-ports 5902/tcp 5901/udp 5902/udp 5901/tcp [root@localhost ~]#
02 VNC 리눅스용 VNC 클라이언트설치하고사용하기 [root@localhost ~]# yum -y install tigervnc ( 생략 ) Installed: tigervnc.x86_64 0:1.3.0-7.fc19 Dependency Installed: fltk.x86_64 0:1.3.0-10.fc19 tigervnc-icons.noarch 0:1.3.0-7.fc19 Complete! [root@localhost ~]# VNC 클라이언트의명령어는 vncviewer vncviewer IP 주소 : 디스플레이번호 ( 예 : vncviewer 192.168.0.13:1) vncviewer IP 주소 : 포트번호 ( 예 : vncviewer 192.168.0.13:5901) [user1@localhost ~]$ vncviewer 192.168.0.13:1 & TigerVNC Viewer 64-bit v1.3.0 (20130924) Built on Sep 24 2013 at 16:32:56 Copyright (C) 1999-2011 TigerVNC Team and many others (see README.txt) See http://www.tigervnc.org for information on TigerVNC. Wed Oct 9 11:19:23 2013 CConn: connected to host 192.168.0.13 port 5901 Wed Oct 9 11:19:24 2013 CConnection: Server supports RFB protocol version 3.8 CConnection: Using RFB protocol version 3.8
02 VNC 리눅스용 VNC 클라이언트설치하고사용하기 vncviewer 를실행하면암호를물어보는팝업창동작 [ 그림 12-9] VNC 암호입력창 [ 그림 12-10] VNC 클라이언트접속화면
02 VNC 윈도용 VNC 클라이언트설치하기 윈도용 VNC 클라이언트는여러가지가있음 TigerVNC : www.tigervnc.com UltraVNC : www.uvnc.com/downloads/ultravnc.html UltraVNC 설치 : UltraVNC Viewer가생성 : 서버주소와포트번호를사용하여접속 [ 그림 12-11] UltraVNC 클라이언트 : 서버설정창
02 VNC 윈도용 VNC 클라이언트접속하기 서버의주소와포트번호를입력하고 Connect 버튼을클릭 [ 그림 12-12] UltraVNC 클라이언트 : 암호입력창 [ 그림 12-13] UltraNC 클라이언트 : 접속화면
03 파일송수신 FTP 서버설치하기 리눅스에서사용하는대표적인 FTP 서버는 vsftpd [root@localhost ~]# yum -y install vsftpd ( 생략 ) Running transaction Installing : vsftpd-3.0.2-5.fc19.x86_64 1/1 Verifying : vsftpd-3.0.2-5.fc19.x86_64 1/1 Installed: vsftpd.x86_64 0:3.0.2-5.fc19 Complete! [root@localhost ~]#
03 파일송수신 xinetd 에의한동작방식설정 설정파일을 /etc/xinetd.d 디렉터리에복사하고수정해야함 설정파일의원본은 /usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd 파일 1 xinetd 가설치되어있지않다면먼저 xinetd 를설치 [root@localhost ~]# yum -y install xinetd ( 생략 ) Running transaction Installing : 2:xinetd-2.3.15-6.fc19.x86_64 1/1 Verifying : 2:xinetd-2.3.15-6.fc19.x86_64 1/1 Installed: xinetd.x86_64 2:2.3.15-6.fc19 Complete! [root@localhost ~]# 2 설정파일을 /etc/xinetd.d 디렉터리에 vsftpd 파일로복사 [root@localhost ~]# cd /etc/xinetd.d [root@localhost xinetd.d]# cp /usr/share/doc/vsftpd-3.0.2/vsftpd.xinetd./vsftpd [root@localhost xinetd.d]#
03 파일송수신 xinetd 에의한동작방식설정 3 설정파일에서 disable 항목의값을 yes 에서 no 로수정 [root@localhost xinetd.d]# vi vsftpd service ftp { socket_type = stream wait = no user = root server = /usr/sbin/vsftpd server_args = /etc/vsftpd/vsftpd.conf nice = 10 disable = no yes를 no로수정한다. flags = IPv4 } :wq [root@localhost xinetd.d]#
03 파일송수신 xinetd 에의한동작방식설정 4 /etc/vsftpd/vsftpd.conf 파일을수정하고 xinetd 데몬을다시동작 vsftpd.conf 파일은 123 행에있는 listen_ipv6=yes 앞에 # 를붙여서주석으로처리 [root@localhost xinetd.d]# vi /etc/vsftpd/vsftpd.conf ( 생략 ) # Make sure, that one of the listen options is commented!! #listen_ipv6=yes pam_service_name=vsftpd userlist_enable=yes tcp_wrappers=yes :wq [root@localhost xinetd.d]# systemctl restart xinetd.service [root@localhost xinetd.d]# 5 방화벽에신뢰할수있는서비스로 FTP 를추가한 [root@localhost xinetd.d]# firewall-cmd --add-service=ftp [root@localhost xinetd.d]#
03 파일송수신 xinetd 에의한동작방식설정 6 FTP 서버가정상적으로동작하는지확인 220 (vsftpd 3.0.2) 가출력되면 FTP 서버가정상적으로동작한다는것 [root@localhost xinetd.d]# telnet 0 21 Trying 0.0.0.0... Connected to 0. Escape character is '^]'. 220 (vsftpd 3.0.2) FTP 가정상적으로동작하는것을확인했으므로 quit 로종료 220 (vsftpd 3.0.2) quit 221 Goodbye. Connection closed by foreign host. [root@localhost xinetd.d]#
03 파일송수신 vsftpd 독자형동작방식설정하기 일단 xinetd 로동작을정지시킨후 vsftpd 가동작하도록해야함 1 xinetd 로 vsftpd 가동작하지않도록설정 : /etc/xinetd.d/vsftpd 파일에서 disable 의값을 no 에서 yes 로수정한뒤 xinetd 를다시시작 [root@localhost xinetd.d]# vi vsftpd ( 생략 ) disable = yes no 를 yes 로수정한다. ( 생략 ) :wq [root@localhost xinetd.d]# systemctl restart xinetd.service [root@localhost xinetd.d]# 2 /etc/vsftpd/vsftpd.conf 파일을수정 : vsftpd.conf 파일은 114 행에있는 listen=no 를 listen=yes 로수정한뒤저장 [root@localhost xinetd.d]# vi /etc/vsftpd/vsftpd.conf ( 생략 ) listen=yes 114 행의 no 를 yes 로수정한다. ( 생략 ) :wq [root@localhost xinetd.d]#
03 파일송수신 vsftpd 독자형동작방식설정하기 3 vsftpd 서비스를동작시킨다. [root@localhost xinetd.d]# systemctl start vsftpd.service [root@localhost xinetd.d]# 4 FTP 서버가정상적으로동작하는지 ps 명령으로확인 [root@localhost xinetd.d]# telnet 0 21 Trying 0.0.0.0... Connected to 0. Escape character is '^]'. 220 (vsftpd 3.0.2) quit 221 Goodbye. Connection closed by foreign host. [root@localhost xinetd.d]#
03 파일송수신 FTP 서버접속하기 1 FTP 클라이언트의명령은 ftp: 윈도의 cmd 창에서 ftp 명령으로리눅스시스템에접속 C:\Users\jw>ftp 192.168.0.13 192.168.0.13 에연결되었습니다. 220 (vsftpd 3.0.2) 사용자 (192.168.0.13:(none)): 2 로그인명과암호를정상적으로입력하면로그인되었다는메시지가출력되고프롬프트인 ftp> 가출력 C:\Users\jw>ftp 192.168.0.13 192.168.0.13 에연결되었습니다. 220 (vsftpd 3.0.2) 사용자 (192.168.0.13:(none)): user1 331 Please specify the password. 암호 : 230 Login successful. ftp> 3 만약로그인이름이나암호가틀릴경우다음과같이실패메시지가출력 ( 생략 ) 사용자 (192.168.0.13:(none)): user1 331 Please specify the password. 암호 : 530 Login incorrect. Login failed. ftp>
03 파일송수신 FTP 내부명령
03 파일송수신 파일송수신하기 pwd, dir 명령사용하기 ftp> pwd 257 "/home/user1" ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. drwxrwxr-x 10 1000 1000 4096 Jul 03 15:12 linux_ex drwxrwxr-x 3 1000 1000 4096 Jul 03 13:22 temp drwxrwxr-x 2 1000 1000 4096 Jun 12 20:37 tmp1 drwxrwxr-x 2 1000 1000 4096 Jun 12 20:37 tmp2 ( 생략 ) drwxr-xr-x 2 1000 1000 4096 Feb 05 13:14? 쒖떇 drwxr-xr-x 2 1000 1000 4096 Feb 05 13:14? 뚯븙 226 Directory send OK. ftp: 0.05초 18.90KB/ 초 ftp>
03 파일송수신 get 명령사용하기 : 파일하나가져오기 ftp> cd linux_ex/ch2 250 Directory successfully changed. ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 1000 1000 659878 Mar 18 20:45 data -rw-r--r-- 1 1000 1000 158 Mar 18 11:38 data1.ln lrwxrwxrwx 1 1000 1000 5 Mar 18 18:52 data1.sl -> data1 drwxrwxr-x 3 1000 1000 4096 Mar 18 02:04 one drwxrwxr-x 2 1000 1000 4096 Jul 03 13:30 temp -rw-rw-r-- 1 1000 1000 0 Jan 01 2013 test 226 Directory send OK. ftp: 0.01 초 27.71KB/ 초 ftp> get data 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for data (659878 bytes). 226 Transfer complete. ftp: 0.17 초 3836.50KB/ 초 ftp>
03 파일송수신 mget 명령사용하기 data 와 data1.ln 파일을모두가져오려면 mget 명령을사용 ftp> mget data data1.ln 200 Switching to ASCII mode. mget data? mget 명령을사용할때는각파일을수신할것인지를물어보는데대답하기귀찮으면 mget 명령을사용하기전에 prompt 명령을입력 ftp> mget data data1.ln 200 Switching to ASCII mode. mget data? n mget data1.ln? n ftp> prompt 대화형모드끄기. ftp> mget data data1.ln 200 Switching to ASCII mode. 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for data (659878 bytes). 226 Transfer complete. ftp: 0.03 초 21995.93KB/ 초 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for data1.ln (158 bytes). 226 Transfer complete. ftp: 0.00 초 158000.00KB/ 초 ftp>
03 파일송수신 hash 명령사용하기 : 송수신이진행되고있는지표시 ftp> hash 해시표시인쇄켜기 ftp: (2048 바이트 / 해시표시 ). ftp> get data 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for data (659878 bytes). ################################################################################ ################################################################################ ################################################################################ ################################################################################ ##226 Transfer complete. ftp: 0.09 초 7095.46KB/ 초 ftp> bye 명령사용하기 : 접속종료 ftp> bye 221 Goodbye. C:\Users\jw>
03 파일송수신 익명 FTP 사용하기 ID: anonymous, 암호 : 본인의이메일주소 익명 FTP 의허용은 /etc/vsftpd/vsftpd.conf 파일에서설정 [root@localhost xinetd.d]# vi /etc/vsftpd/vsftpd.conf ( 생략 ) anonymous_enable=yes ( 생략 ) [root@localhost xinetd.d]# 예 : 윈도에서익명으로접속 C:\Users\jw>ftp 192.168.0.13 192.168.0.13 에연결되었습니다. 220 (vsftpd 3.0.2) 사용자 (192.168.0.13:(none)): anonymous 331 Please specify the password. 암호 : 230 Login successful. ftp>