서버/리눅스

[리눅스] SSH(Secure Shell)

장동규 2017. 4. 27. 19:45

SSH (Secure Shell) 

port : 22

데이터 전송시 평문을 암호화해서 전송한다.

모든 암호설정 및 방화벽이 설정되어있기에 설치후 설정을 안건들여도 문제되지 않는다.

(telnet은 데이터전송시 평문그대로 보내기에 위험하다)


관련 모듈

server

openssh-server.x86_64

client


Server-설정파일( /etc/ssh/sshd_config )

#>vi /etc/ssh/sshd_config

17 #Port 22                    

19 #ListenAddress 0.0.0.0  

23 #Protocol 2           

43 SyslogFacility AUTHPRIV     

49 #PermitRootLogin yes   

52 #MaxSessions 10 

59 AuthorizedKeysFile .ssh/authorized_keys 


17 #Port 22            기본으로 제공되는 포트 22 ( default값으로 변경가능 )

>> 포트를 바꾸면 클라이언트는 -p 옵션을 이용해 접속해야 한다.

19 #ListenAddress 0.0.0.0 #ipv6를 위한서비스


23 #Protocol 2  : ver2로만 접속한다. 암호화 방식이 다르다.

version 1 Hybrid-Cryptography

version 2 Diffie-Hellman


43 SyslogFacility AUTHPRIV

AUTH 사용자 인증에 관련한 메세지

AUTHPRIV 사용자 인증 절차에 관련한 메세지


49 #PermitRootLogin yes   : root사용자 로그인 설정 ( default값으로 변경가능 )


51 #MaxAuthTries 6         : 접속당 최대 인증 시도 횟수 ( 반이 넘어가면 log가 기록되기 시작한다. )

 

52 #MaxSessions 10         : 세션갯수 ( SSH 접속가능한 갯수 설정 )


59 AuthorizedKeysFile  ss/authorized_keys : 공개키, 비밀키에 대한파일



client 접속 ( openssh-clients.x86_64 )

window

shell program

putty

리눅스

   #>yum install -y openshh-client.x86_64


SSH가 기본으로 깔려있길레 그냥 접속한다.

#>ssh <user>@<server_ip>

Are you sure you want to countinue connecting ( y/n )? yes     #이질의는 다음로그인에 증명하게 허락해달라.

     pwd ? 

 .......서버 통신.....

위와같이 서버로 접속하면 서버의 ip대역이 뜬다.

 

#SSH 역할

scp ( secure copy )

원격연결 > 서버데이터를 복사 > 클라이언트에 붙여넣기 > 연결까지 해제 역할
#>scp <src_path> <dst_path>

#>scp admin01@100.100.100.128:/home/admin01/file1 /root/file.cp

src : <user>@<server_ip>:path

dst : (client) Path

이떄 admin01은 계정이므로 파일과 디렉터리들의 권한이 로그인하려는 사용자에 부여되어 있어야한다.

반대로 쓰면 클라이언트 파일을 서버에 복사하는 것도 가능하다.

 

sftp( sercure ftp )

ftp서비스가 아닌 파일 암호화 전송 프로토콜이다. ( ssh기반이므로 22번 포트이다. )
#>sftp <user_name>@<server_ip>

#>sftpd admin01@100.100.100.130

사용은 ftp와 비슷하게 할 수 있으며 다른점은 22번포트(ssh)로 동작하며 보안설정이 되어있다는 접이다.

요즘 나오는 ftp클라이언트 서비스는 sftp-server접속서비스를 제공한다. 

 

Key

명령어를 사용하면 public, private key 두 개가 만들어진다.

- puublic key ( 공개키 ) : 웹브라우저 자동로그인 같은거

 

- private Key ( 비밀키 ) : 내가 가지고있는 비교할 키

 

client#>ssh-keygen

 

[RSA] 암호와 인증 방식으로

첫번째 enter : default path로 key값을 저장하겠다.

2,3번째 enter : 암호인증을 하나 더 추가한다.

/root/디렉터리에 .ssh 디렉터리 생성

id_rsa : private key file

id_rsa.pub : public key file 

 

#키배포  >

client : root > server : admin01 ( 키등록 ) 효과 : 패스워드 인증없이 로그인 가능

생성된 id_rsa.pub file을 server의 사용자 홈디렉터리로 이동한다.

 

#키등록

서버가 등록( /etc/ssh/sshd_config 디렉터리 )의 옵션 59번쨰에 보이는 파일에 등록시켜야 한다.

#>vi /etc/ssh/sshd_config

59 AuthorizedKeysFile .ssh/authorized_keys 

 

#>su admin01

admin01$>touch ~/.ssh

admin01$>touch ~/.ssh/authorized_keys

admin01$>cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

admin01$>chmod 700 ~/.ssh

admin01$>chmod 600 ~/.ssh/authorized_keys

 공개키는 여러개 등록시킬수 있기때문에 이어쓰기 작성한다.

 또한 디렉터리와 파일에 대해 권한을 설정해주어야 한다. 

이러한 권한설정이 귀찮다면 /.ssh를 만들고 상속권한을 주면 되는데 나는 그게 더 귀찮을 것같다 ..

 

authorized_keys path의 경로가 바꼇을 경우 옵션 -i 를 사용해서 private key path 설정.

 VNC service ( 그래픽 환경을 가지고 접속을 할 수 있다)