[SSH 설정 파일]
/etc 디렉토리를 살펴보면 두 개의 환경 설정 파일이 존재한다.
Ssh_config 파일은 클라이언트 유틸리티인 ssh의 설정 파일이고 sshd_config는 서버 데몬인 sshd의 설정 파일이다.
이외에도 많은 설정 파일이 존재해서 OpenSSH를 처음 사용하는 사람은 대단히 혼란스럽다. OpenSSH에서 사용되는 중요한 설정 파일의 목록은 다음과 같다.
파일 경로 | 설명 |
$HOME/.ssh/known_hosts | 시스템 전역적으로 신뢰할 수 있는 호스트의 리스트 |
$HOME/.ssh/identity, $HOME/.ssh/id_dsa, $HOME/.ssh/id_rsa | 사용자 인증에 대한 개인키가 저장되어 있는 파일이다. 순서대로SSH1 RSA, SSH2 DSA, SSH2 RSA 프로토콜을 위한 파일이다. 이 파일은 다른 사람이 읽을 수 있으면 개인키로서 기능을 상실한다. 개인키에는 패스프레이즈(passphrase)를 가지고 키를 보호할 수 있는데 패스프레이즈는 3DES 알고리즘을 사용해 파일의 중요한 부분을 암호화 한다. |
$HOME/.ssh/identity.pub, $HOME/.ssh/id_dsa.pub, $HOME/.ssh/id_rsa.pub | 이 파일은 개인키에 해당하는 공개키이다. 목적은 앞의 개인키와 동일한 목적을 가지고 있다. |
$HOME/.ssh/config | /etc/ssh/ssh_config가 모든 사용자에 해당하는 설정이라면 이 파일은 각 사용자에 해당하는 설정을 적어 놓을 수 있다. |
$HOME/.ssh/authorized_keys | 사용자가 로그인할 때 필요한 RSA 또는 DSA 공개키의 목록이 있는 파일이다. |
/etc/ssh/ssh_known_hosts | 시스템 전역에 걸친 신뢰할 수 있는 컴퓨터의 리스트를 적어 놓는 파일이다. 한 라인에 하나의 컴퓨터가 등록된다. |
/etc/ssh/ssh_config | 시스템 전역에 걸친 ssh 클라이언트 도구에 대한 설정이다. |
/etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key | 순서에 따라 SSH1 RSA, SSH2 DSA, SSH2 RSA 프로토콜을 위한 호스트 공개키 파일들이다. |
/etc/ssh/sshrc | Ssh로 로그인을 할 때, 사용자의 쉘이 시작이 되기 전에 실행해야할 명령어를 적어두는 곳이다. |
$HOME/.ssh/rc | Ssh로 로그인을 할 때, 사용자의 쉘이 시작이 되기 전에 실행해야 할 명령어를 적어두는 곳이다. 단 사용자마다 다른 명령을 실행시킬 때 사용한다. |
$HOME/.ssh/environment | 추가적인 환경변수를 설정할 수 있다. |
다음은 SSH 서버 데몬에 대한 설정 파일인 /etc/ssh/sshd_config 파일의 예이다. 이 파일은 OpenSSH가 설치되면서 기본적으로 설치된 설정 파일이다.
거의 모든 라인이 코멘트로 설정이 되어 있기 때문에 사실 이 파일에서 데몬에 관해 설정하는 것은 없다. 즉 이 파일에 코멘트로 만들어 놓은 옵션은 sshd 데몬의 기본 설정이라는 점에 유의하기 바란다.
필자는 이 설정 파일에 약간의 코멘트를 추가함으로써 sshd_config 파일에 대한 설명을 마치도록 하겠다.
[/etc/ssh/sshd_config]
# $OpenBSD: sshd_config,v 1.53 # 다음은 sshd의 시스템 전역 설정이다. 더 자세한 설명은 sshd 매뉴얼을 보길 바란다.
# This is the sshd server system-wide configuration file. See sshd(8) # for more information.
# 이 sshd는 'PATH=/usr/local/bin:/bin:/usr/bin' 경로로 컴파일이 되었다. # This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
# 일반적인 경우라고 기본 옵션을 사용하는 것이 가장 좋다. # 다음의 각 옵션은 OpenSSH에 설정이 되어 있는 기본 옵션이다. 만약 기본 옵션을 # 바꾸고 싶으면 코멘트를 제거한 후 값을 바꾸면 된다. # 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.
# 기본 sshd 포트는 22번으로 /etc/services 파일을 보면 확인 할 수 있다. Port 22 # 지원하는 프로토콜은 SSH2, SSH1이다. Protocol 2,1 # 한 대의 컴퓨터가 여러 개의 IP를 가질 때 특정 주소에 대해서만 서비스를 해준다. #ListenAddress 0.0.0.0 #ListenAddress :0.0.0.0
# SSH 버전 2를 위한 호스트키 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # SSH 버전 1을 위한 호스트키 Hostkey /etc/ssh/ssh_host_key
# 서버키의 수명과 서버키의 길이 # 키의 길이는 기본값은 768이고 최대 1024, 최소 512이다. # Lifetime and size of ephemeral version 1 server key #KeyRegenerationInterval 3600 #ServerKeyBits 768
# Logging #obsoletes QuietMode and FascistLogging #SyslogFacility AUTH #LogLevel INFO
# 인증 # 성공적으로 로그인을 하지 못했을 경우 앞으로 몇초간 로그인을 못하게 할지 설정 # Authentication:
LoginGraceTime 600 # 루트 사용자의 로그인 여부 PermitRootLogin yes # 로그인을 하는 전체 사용자의 파일이나 홈디렉토리의 퍼미션을 체크할지 여부 StrictModes yes
# SSH 버전 1을 위한 옵션으로 RSA 인증을 허용할지 여부 RSAAuthentication yes # 공개키 인증을 허용할지 여부 SSH 버전 2에만 해당 PubkeyAuthentication yes # 공개키를 설치할 파일의 이름 AuthorizedKeysFile .ssh/authorized_keys
# rhosts 인증은 사용하지 말아야 한다. # rhosts authentication should not be used #RhostsAuthentication no # Don't read the 사용자의 ~/.rhosts와 ~/.shosts를 읽지 않게 한다. # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # 다음이 제대로 작동하기 위해서는 /etc/ssh/ssh_known_hosts이 존재해야 한다. # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #RhostsRSAAuthentication no # SSH 버전 2와 유사 # similar for protocol version 2 #HostbasedAuthentication no # RhostsRSAAuthentication와 HostbasedAuthentication 인증 방법에 대한 # ~./ssh/known_hosts를 신뢰할 수 없을 때 yes로 바꾼다. # Change to yes if you don't trust ~/.ssh/known_hosts for # RhostsRSAAuthentication and HostbasedAuthentication #IgnoreUserKnownHosts no
# 터널링된 단순 문자 비밀번호를 허용하지 않을 때는 no로 바꾼다. # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no
# Challenge, Response 인증을 허용할지 여부 # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes
# 커버로스 옵션 # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes
# AFS 토큰이 서버로 전달될지 여부 #AFSTokenPassing no
# 커버러스 TGT가 서버로 포워딩될 수 있는지 여부 # Kerberos TGT Passing only works with the AFS kaserver #KerberosTgtPassing no
# PAM을 사용해서 키보드 입력을 통한 인증을 하기 위해서 yes로 설정 # 경고 : 이 설정을 활성화하면 'PasswordAuthentication' 옵션은 무시됨 # Set this to 'yes' to enable PAM keyboard-interactive authentication # Warning: enabling this may bypass the setting of 'PasswordAuthentication' #PAMAuthenticationViaKbdInt yes
# X11 포워딩 기능을 사용할지의 여부, 이 옵션을 비활성화하더라도 각 사용자는 # 이 옵션을 재정의하여 사용할 수 있음 #X11Forwarding no # X11 포워딩할 때 처음 사용 가능한 디스플레이 수를 지정 #X11DisplayOffset 10 # sshd가 X11 포워딩 서버를 루프백 주소와 바인딩할지 여부를 결정 #X11UseLocalhost yes # 사용자가 로그인할 때 /etc/motd 파일의 내용을 보여줄지 여부 #PrintMotd yes # 사용자가 최종 로그인한 날짜와 시간을 보여줄지 여부 #PrintLastLog yes # 다른 쪽에 TCP keepalive 메시지를 보낼지 여부 # 한 쪽 시스템이 다운되었을 경우 세션이 계속 연결되어 있는 것을 막기 위해 #KeepAlive yes # 상호 대화식 로그인을 위해서 login을 사용할지 여부 #UseLogin no # 네트워크로부터 들어온 요청을 처리하기 위해서 별도의 권한을 가진 자식 프로세스 # (Child Process)를 만들지 여부 #UsePrivilegeSeparation no
# 동시 사용자를 처리하기 위해 인증이 되지 않은 연결의 개수 #MaxStartups 10 # no default banner path # 접속할 때 보여줄 배너 파일의 경로 #Banner /some/path # 원격 컴퓨터의 IP 주소와 이름이 일치하는지 확인할지 여부 #VerifyReverseMapping no
# 외부 서브 시스템을 설정한다 (예, FTP) # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server |
다음은 SSH 클라이언트 툴인 ssh의 환경 설정 팡리이다. 전역에 걸친 환경 설정 파일은 /etc/ssh/ssh_config이며 각 개인마다 설정할 내용은 $HOME/.ssh/config 팡리이다.
[/etc/ssh/ssh_config]
# $OpenBSD: ssh_config,v 1.12
# 이 파일은 ssh 클라이언트 툴에 대한 시스템 전역 설정이다. 자세한 설명은 $ ssh의 매뉴얼을 보면 알 수 있다. 이 파일은 일반 사용자들에게 기본 설정이며 # 각 사용자는 자신의 설정을 따로 저장을 하거나 ssh 명령어를 실행할 때 옵션으로 # 제공할 수 있다. # This is the ssh client system-wide configuration file. See ssh(1) # for more information. This file provides defaults for users, and # the values can be changed in per-user configuration files or on the # command line.
# 환경 설정 데이터는 다음과 같은 순서대로 분석된다. # 1. 명령어 옵션 # 2. 사용자 개별 설정 파일 # 3. 시스템 전역 설정 파일 # 어떤 설정 옵션이든지 간에 먼저 설정을 한 것이 설정값으로 적용된다. # 따라서 각 컴퓨터에 한정된 정의가 먼저 나오고 다른 디플트값이 뒤에 나와야 한다. # Configuration data is parsed as follows: # 1. command line options # 2. user-specific file # 3. system-wide file # Any configuration value is only changed the first time it is set. # Thus, host-specific definitions should be at the beginning of the # configuration file, and defaults at the end.
# 사이트 전역에 걸친 다양한 기본 옵션 설정들 # Site-wide defaults for various options
# 이 파일의 설정에 영향을 받는 호스트 컴퓨터의 이름 '*' 나 '?'이 사용될 수 있다. # '*'를 사용하면 설정이 모든 컴퓨터에 영향을 미친다는 의미이다. Host * # 인증 절차를 위해서 리모트에 있는 컴퓨터로 포워딜 될 것인지 여부 ForwardAgent no # X11 연결이 자동으로 보안 채널을 통해 리다이렉트 될지 여부 ForwardX11 no # 사용할 인증 방법을 정의 RhostsAuthentication yes RhostsRSAAuthentication yes RSAAuthentication yes PasswordAuthentication yes # sshd 데몬이 없는 것과 같은 이유로 인해서 연결을 실패했을 때 rsh를 사용할지 여부 FallBackToRsh no # rlogin/rsh를 사용할지 여부. SSH 프로토콜을 지원하지 않을 때 사용할 수 있다. UseRsh no # AFS 토큰을 리모트 서버에 전달할지 여부 BatchMode no # 호스트 IP 주소를 known_hosts 파일에서 추가적으로 찾는다. CheckHostIP yes # yes - $HOME/.ssh/known_hosts 파일에 호스트를 추가하지 않는다. # no - $HOME/.ssh/known_hosts 파일에 호스트를 자동으로 추가한다. # ask - 사용자의 확인을 받은 후 $HOME/.ssh/known_hosts 파일에 호스트를 추가한다. StrictHostKeyChecking ask # 개인키 파일의 위치 IdentityFile ~/.ssh/identity IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/id_dsa # 포트번호, 지원 프로토콜 Port 22 Protocol 2,1 # SSH 버전 1을 위한 암호화 알고리즘 Cipher 3des # SSH 버전 2를 위한 암호화 알고리즘, 순서대로 운선 순위가 있다. Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc # Escape 문자 EscapeChar ~ |
환경 설정 파일에 대한 기본적인 설명만을 하였다. 더 자세한 옵션에 대해서 알고 싶은 독자는 ssh, sshd의 man 페이지를 확인해보기 바란다.
출처 : http://blog.pages.kr/423
SSH 공개키를 이용한 로그인 (0) | 2013.12.12 |
---|