[-문구-Compeople-문구-]

+::System::/Linux2014. 2. 24. 17:57
서버에서 sftp 서브시스템을 거부함 / subsystem request for sftp failed, subsystem not found / sftp접속 불가.

 

* 오랜만에 접속하는 리눅스 시스템...

 

* editplus 이용하여, sftp를 사용하려 하였으나. 에러메세지가 난다..

  "서버에서 sftp 서브시스템을 거부함" 라는 창이 뜨면서 에러가 뜬다.

 

* ssh는. 정상적으로 잘. 붙는다..(서비스 정상)

 

* 로그확인..

[root@icms ~]# tail -f /var/log/messages
Aug 25 06:32:57 icms xinetd[5569]: Started working: 0 available services
Aug 25 06:33:19 icms sshd[5574]: Accepted password for root from ::ffff:106.245.239.34 port 59499 ssh2
Aug 25 06:33:19 icms sshd[5574]: subsystem request for sftp
Aug 25 06:33:19 icms sshd[5574]: subsystem request for sftp failed, subsystem not found
Aug 25 06:34:17 icms sshd[5577]: Accepted password for icms from ::ffff:106.245.239.34 port 59527 ssh2
Aug 25 06:34:17 icms sshd[5579]: subsystem request for sftp
Aug 25 06:34:17 icms sshd[5579]: subsystem request for sftp failed, subsystem not found
Aug 25 06:35:53 icms sshd[5583]: Accepted password for icms from ::ffff:106.245.239.34 port 59557 ssh2
Aug 25 06:35:53 icms sshd[5585]: subsystem request for sftp
Aug 25 06:35:53 icms sshd[5585]: subsystem request for sftp failed, subsystem not found

 

* 확인해보니. 에러메세지 처럼, 서브시스템을 확인 못했단다..

 

* ssh 환경설정 파일 수정...

[root@icms ~]# vi /etc/ssh/sshd_config 

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit

..................

중략...

..................

#ChrootDirectory none

# no default banner path
#Banner none

# override default of no subsystems
# Subsystem        sftp           /usr/libexec/sftp-server  <= 당초

Subsystem        sftp           /usr/libexec/openssh/sftp-server  # <= 주석해제.. 변경.
Port 8022 

 

* sshd 서비스 재시작...

[root@icms ~]# /etc/rc.d/init.d/sshd restart
sshd (À»)¸¦ Á¾·áÇÔ:                                        [  È®ÀΠ ]
sshd¸¦ ½ÃÀÛÇÔ:                                             [  È®ÀΠ ]
[root@icms ~]# tail -f /var/log/messages   
Aug 25 06:41:59 icms xinetd[5626]: Started working: 0 available services
Aug 25 06:42:06 icms sshd[5629]: Accepted password for icms from ::ffff:106.245.239.34 port 59743 ssh2
Aug 25 06:42:07 icms sshd[5631]: subsystem request for sftp
Aug 25 06:42:07 icms sshd[5631]: error: subsystem: cannot stat /usr/libexec/sftp-server: No such file or directory
Aug 25 06:42:07 icms sshd[5631]: subsystem request for sftp failed, subsystem not found
Aug 25 06:44:15 icms sshd[5613]: Received signal 15; terminating.
Aug 25 06:44:15 icms sshd: sshd -TERM succeeded
Aug 25 06:44:15 icms sshd[5643]: Server listening on :: port 8022.
Aug 25 06:44:15 icms sshd[5643]: error: Bind to port 8022 on 0.0.0.0 failed: Address already in use.
Aug 25 06:44:15 icms sshd:  succeeded

 

** 정상 접속 확인.

Posted by Compeople
+::System::/Linux2013. 5. 15. 10:49

** 참고 : Sigel's house made of ice 。。。(http://entireboy.egloos.com/4536642)

 

telnet으로 작업하다가 간단하게 파일을 전송하고 싶을 때가 있다. FTP 등을 사용하면 되지만, FTP가 막혀 있는 시스템도 있고.. 파일 한두개 옮기려고 다른 프로그램 실행하기도 귀찮을 때 사용하면 좋은 명령이 있다.

rz와 sz인데..
rz : PC -> 서버 (receives files with ZMODEM)
sz : 서버 -> PC (sends one or more files with ZMODEM)



rz/sz는 ZMODEM을 이용하는 명령이라고 한다. rb/sb는 YMODEM, rx/sx는 XMODEM을 사용하고.. 역시 r이 들어간 명령은 서버 입장에서 receive이고, s는 send이다.

이 명령이 없다면, Yum을 통해 설치하면 된다고 한다.
# yum install lrzsz
lrzsz 설치에 대한건 YUM을 이용한 프로그램 Install (SZ/RZ)rz/sz yum install (설치) 참조

 

** 업데이트 에러발생시

[root@dev-linux08 119.iws.kr]# yum -y install lrzsz
Loaded plugins: fastestmirror, security
Setting up Install Process
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
 Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/x86_64/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base

* 최근 CentOS 6 버전 업데이트 지원이 종료되면서 yum update 등 명령어 사용 시 오류가 발생하고 있다.

* 해결 방법 : 각 OS Bit에 맞춰 3줄씩 명령어 입력 후 yum update 하면 정상 동작 완료 / 업데이트 사이트 주소 변경.


32Bit
echo "https://vault.centos.org/6.10/os/i386/" > /var/cache/yum/i386/6/base/mirrorlist.txt
echo "http://vault.centos.org/6.10/extras/i386/" > /var/cache/yum/i386/6/extras/mirrorlist.txt
echo "http://vault.centos.org/6.10/updates/i386/" > /var/cache/yum/i386/6/updates/mirrorlist.txt
64Bit
echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt
echo "http://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
echo "http://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt

Posted by Compeople
+::System::/Linux2013. 5. 13. 14:59

* 참조 : Outsider's Dev Story (http://blog.outsider.ne.kr/580)

 

리눅스나 OSX같은 UNIX계열의 OS에서 1024포트 아래의 포트는 privileged 포트로 root계정이 아니면 사용할 수 없습니다.(Windows계열에서는 상관없습니다.) Apache같은 웹서버를 앞에 두고 있다면 상관없지만 Tomcat이나 그외의 서버에서 80포트를 사용하려고 하면 sudo등을 사용해서 root계정으로 실행해야만 80포트를 사용할 수 있습니다.

문제는 이렇게 웹서버를 root계정으로 실행할 경우 보안의 문제가 생길수가 있기 때문에 문서들을 찾아볼 경우 이렇게 사용하는 것을 권하지 않고 있습니다. 하지만 80포트를 사용해야할 필요가 있을 경우 찾아보니 OS에서 제공하는 iptables을 사용해서 80포트를 다른 포트로 리다이렉트 시키거나 authbind 새창으로 열기를 설치해서 특정포트를 특정앱에게 사용할 수 있도록 허용해 줄수 있습니다. 고민을 하다가 authbind를 사용하려면 별도의 설치를 해야하기도 해서 iptable을 사용하기로 했습니다.

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

* 2013.05.13 추가

ex) 아파치가 80으로 서비스 되고 있다는 가정하에, 외부에서 88포트로 접근시, 내부 80으로 리다이렉트 하고자 할때..

의미는 크게 없는 작업이지만, 해당 내용도 가능하다라는 내용을 확인차 테스트해봄

이렇게 함으로써, 내부에서 80포트로 서비스 되고 있지만, 외부에서 88포트로 접근시, 80으로 리다이렉트 되어, 아파치 페이지가 열림.

 

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 88 -j REDIRECT --to-port 80


위와같은 명령어를 터미널에서 입력하면 80으로 들어오는 모든 패킷을 8080으로 리다이렉트 처리해버립니다. 80포트로 요청을 받기위해서 웹서버를 8080으로 띄워놓고 위처럼 iptable을 이용해서 80으로 들어오는 패킷을 웹서버가 받도록 하는 것입니다.

옵션을 간단히 설명하면 -A는 새로운 룰을 추가하는 것으로 PREROUTING에 대한 룰을 추가합니다. -t는 테이블을 지정하는 옵션으로 nat로 지정합니다 -i 는 인터페이스를 지정하며 인터넷에 연결되어 있는 장비를 eth0으로 지정하고 -p는 프로토콜을 지정하는 옵션으로 tcp를 지정하였습니다. --dport 은 도착지포트를 의미하며 여기서는 80을 지정합니다 -j는 패킷을 어떻게 처리할 지를 결정하는 옵션으로 8080으로 리다이렉트 처리합니다.

iptables -t nat -L


위 명령어를 입력하면 추가한 룰을 확인해 볼 수 있습니다. 기본적인 리스트는 -L 옵션으로 확인하지만 PREROUTING은 nat테이블을 지정해서 보아야 하는것 같습니다.

[Linux] IPTABLE 기본 사용법 새창으로 열기이나 IptablesHowTo 를 보면 자세히 나와 있습니다.

Posted by Compeople
+::System::/Linux2013. 5. 3. 11:13

리눅스 파일안에 내용 일괄수정 팁.

* mysql 의 replace 명령어를 이용한 파일내용 일괄 수정
find . -type f -name '*' -exec /usr/local/mysql/bin/replace oldcontent netcontent -- {} \;

 

* MySQL 설치시 함께 설치되는 replace 라는 명령을 이용한 파일 내용 치환.

find . -type f -name '*' -exec replace dotname dothost -- {} \;

*perl 을 이용한 파일 일괄 변경
find . -name *.* -exec perl -p -i -e 's/old/new/g' {} \;

 

Posted by Compeople
+::System::/Linux2013. 2. 1. 13:26

서버를 다운시키지 않고 서비스를 재시작

 

예를 들어 dns 같은 경우에는

in.named(named) 라는 daemon에 의해서 수행되므로 다음과 같은 명령을 주신후에
process id에 kill을 사용하여 HUP signal을 보내면 다시 data를 읽어들여
셋팅을 하게 됩니다.

 

** ps명령어로 named 프로세스번호(PID) 확인
%ps -ef : grep named(또는 in.named)
root 2123 1 0 Sep 03 ? 03:17 named(또는 in.named)
- PID 2123번으로 확인됨.

 

%whoami
root

 

%kill -HUP 2123
- 위에서 확인된 PID 2123을 kill명령어로 재시작.

 

%ps -ef : grep named(또는 in.named)
root 2123 1 0 Sep 03 ? 03:17 in.named
- ps명령어오 확인결과, 정상적으로 구동되는것을 확인

Posted by Compeople
+::System::/Linux2012. 10. 18. 19:01

* 언어셋 관련. 파일 수정

[root@localhost install]# vi /etc/sysconfig/i18n

 

* i18n파일이.. OS설치시 언어부분 설정사항과, O/S버젼이나 종료에 따라 다르게 나온느듯 하다.

 

* centos 5.2 / 64bit 경우. 아래 한줄이 있었다.

LANG="ko_KR.UTF-8"

* 일단. 주석처리하고..

#LANG="ko_KR.UTF-8"
#아래 4줄 추가.

LANG="ko_KR.eucKR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

 

* 수정한 파일 시스템 적용 / source명령어로 위에서 수정한 i18n 파일을 적용.

[root@localhost install]# source /etc/sysconfig/i18n

 

* 정상적으로 리눅스 시스템 콘솔에서 한글부분 사용 및 출력 가능합니다.

 

* 위 사항의 경우 다양한 환경이나. 상황에 따라.. 달라지는듯 합니다. 어떤데는 위와같이 적용해도 한글이 안먹는 경우가 있습니다. 좀더 정확한 부분은.. 더 찾아봐야 할듯 합니다.

 

** 참고 i18n파일

* i18n 파일내용

\#LANG="ko_KR.eucKR"
#SUPPORTED="en_US.UTF-8;en_US:en:ko_KR.eucKR:kor_KR:ko"
#SYSFONT="latarcyrheb-sun16"
#LANG="en_US.UTF-8"
#SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
#SYSFONT="latarcyrheb-sun16"
LANG="ko_KR.eucKR"
SUPPORTED="ko_KR.eucKR:ko_KR:ko"
SYSFONT="lat0-sun16"
SYSFONTACM="iso15"

 

* OS정보 : CentOS release 5.2 (Final) / 32bit

Posted by Compeople
+::System::/Linux2011. 12. 23. 04:10


제목 : 리눅스 압축(tar, gzip, bzip2)  리눅스 개념 / 리눅스  2009/10/08 12:07
출처 : http://blog.naver.com/cafca23/90071041257

tar [동작]  [옵션]  [묶음파일명]  [filelist or dir]
tar 는 압축명령이 아니며 여러 개의 파일을 한 개의 파일로 묶어주는 명령어
 동작
 c (새로운 묶음)
 x (묶인 파일을 풀어줌),
 t (묶음을 풀기전에 묶인 경로를 보여줌)
 
 옵션
 f (필수) – 묶음 파일명 지정 
  => 원래 tar는 tape장치 백업이 기본(생략시 tape로)
 v – visual
 z – tar + gzip  (GNU only)
 j – tar + bzip2 (GNU only)
 

※ tar
- tar는 압축하는 것이 아닌 여러개의 파일을 단순히 하나의 파일로 묶는 것이다.

test 디렉토리 안에 있는 파일들을 tar로 묶는 방법이다.
cvf 는 tar의 옵션이고 file.tar은 묶어준 파일 이름이며 * 은 test 디렉토리 안의 모든것을 묶는다는 의미이다.

tar로 묶여 있는 파일 내용을 확인 하는 방법이다.
file.tar의 리스트를 확인하는 방법은 tvf  tar의 옵션이다.

tar로 묶여 있는 파일을 풀어주는 방법이다. xvf는 풀어주는 옵션이다.


※ tar 과 gzip
- tar의 옵션에서 z라는 옵션을 추가해서 cvfz 라는 옵션을 사용하면 간단하게 묶음과 압축을 동시에 가능하다.

tar와 gzip이 함께 사용할 경우에는 cvfz 라는 옵션을 사용하면 된다. z는 gzip을 뜻한다.

gzip으로 압축 되어 있는 파일 내용을 확인 하는 방법이다. file.tar의 리스트를 확인하는 방법은 tvfz 옵션이다.

gzip 압축 파일을 풀어주는 방법이다. xvfz는 풀어주는 옵션이다.

 

gzip 의 활용법
gzip file1 : 압축하기                                      gunzip file1.gz또는 gunzip -d file1.gz : 압축풀기
gzip -f file1 : 현재 사용중인 파일은 압축되지 않는다. 이럴때 강제적으로 압축할 수 있다.
gzip -r test : 특정 디렉토리를 대상으로 압축      gunzip -r test :특정 디렉토리를 대상으로 압축풀기
 

※ tar 과 bzip2
 - 현재 실무에서 많이 쓰이고 있으며, gzip 보다 압축율이 더 좋다.

tar와 bzip2이 함께 사용할 경우에는 cvfj 라는 옵션을 사용하면 된다. j는 bzip2을 뜻한다.

bzip2 로 압축 되어 있는 파일 내용을 확인 하는 방법이다. file.tar의 리스트를 확인하는 방법은 tvfj 옵션이다.

bzip2 압축 파일을 풀어주는 방법이다. xvfj는 풀어주는 옵션이다.


bzip2 의 활용법
bzip2 file1 : 압축하기                                      bunzip2 file1.gz또는 bunzip2 -d file1.bz2 : 압축풀기

tar(묶음)
c : 아카이브 생성
C : 다른 경로 지정
x : 아카이브 해제
v : 작업 상황 표시
f : tar 지정
t : 묶음파일내용 확인
r : 묶음 파일에 새로운 파일추가
u : 업그레이드된 파일을 묶음파일에 추가
z : gzip 압축/해제
j : bzip2 압축/해제

#tar c [묶을 파일명] [대상]
실습
#touch 1.txt 2.txt 3.txt
#tar cvf test.tar *
#ls
#tar t test.tar
실습
#ifconfig > 4.txt
#tar uf test.tar 4.txt (4.txt 추가하기)

#tar cvfz -> tar + gzip
#tar cvfz -> tar + bzip2
#tar xvfz a.tar.gz
#tar cvfz a.tar *
a.tar.gz (압축 푸는 3가지 방법)
1. gzip -d a.tar.gz
2. gunzip a.tar.gz
3. tar xvfz a.tar.gz
gzip (압축율 -1 ~ -9) a.tar.gz *
default값은 -6


* 압축 잘못 푼 파일만 삭제 하는 방법
# tar tfz etc.tar.gz | xargs rm -rf

Posted by Compeople
+::System::/Linux2011. 12. 22. 23:05


항상 문자를 검색할때  해당 디렉토리에서

grep [찾을문자열] * 

이와 같이 사용하곤 했는데

가끔 하위 디렉토리가 너무 깊을 경우 애먹는 경우가 있어 찾아보니

물론 방법은 있다 ... 그런데 무진장 안외워진다 !!!! 흥!!!

기존에 grep 이 지원하지 않아서 xargs 로 사용했답니다.

그래서 아래와 같이 명령을 하면 하위디렉토리까지 문자열들을 찾아줘요 !!

$find . -type f -print |xargs fgrep '문자열'


검증해보진 않았지만 최근버전 리눅스의 경우 아래와같은 명령으로도(grep) 가능하다네요 ~~

$grep -r '문자열' 시작경로

Posted by Compeople
+::System::/Linux2011. 10. 18. 19:49

리눅스 80포트 실시간 접속자수(웹서버 실시간 접속자수)

======================================================================
#!/bin/sh
while [ : ]
do
        date
        echo -n "-:80 LISTEN  : "
        netstat -nap | grep :80 | grep LISTEN | wc -l
        echo -n "-ESTABLISHED : "
        netstat -nap | grep :80 | grep iESTABLISHED | wc -l
        echo -n "-TIME_WAIT   : "
        netstat -nap | grep :80 | grep TIME_WAIT | wc -l
        echo -n "-CLOSE_WAIT  : "
        netstat -nap | grep :80 | grep CLOSE_WAIT | wc -l
        sleep 4
done
======================================================================

해당 내용을 파일로 저장후 실행권한을 준후 서버에서 실행한다.
[root@node-2 root]# ./apache_conn.sh 
2009. 08. 18. (화) 11:30:34 KST
-:80 LISTEN  : 1
-ESTABLISHED : 0
-TIME_WAIT   : 555
-CLOSE_WAIT  : 76
2009. 08. 18. (화) 11:30:40 KST
-:80 LISTEN  : 1
-ESTABLISHED : 0
-TIME_WAIT   : 718
-CLOSE_WAIT  : 76


위 내용중.. "sleep 4"부분의 숫자를 조정하면 화면에 표시해 주는 시간을 조정할 수 있다.
현재는 1초에 한번 화면에 실시간 정보를 뿌려준다.

Posted by Compeople