15.3. OpenSSH 클라이언트 설정

클라이언트 컴퓨터에서 OpenSSH 서버로 접속하기 위해서는 클라이언트 컴퓨터 상에 openssh-clients 패키지와 openssh 패키지가 설치되어 있어야 합니다.

15.3.1. ssh 명령어 사용하기

ssh 명령은 rlogin, rsh, telnet 명령의 보안 대체입니다. ssh 명령을 사용하여 원격 컴퓨터에 로그인하실 수 있으며 명령 실행도 가능합니다.

ssh 명령을 사용하여 원격 컴퓨터에 로그인하는 것은 telnet 명령을 사용하는 방식과 유사합니다. 예를 들어, penguin.example.net이라는 원격 컴퓨터에 로그인하기 위해서는, 쉘 프롬프트 상에서 다음과 같은 명령을 입력합니다:

ssh penguin.example.net

원격 컴퓨터에 처음으로 ssh 하신 경우, 다음과 같은 메시지를 보실 것입니다:

The authenticity of host 'penguin.example.net' can't be established.
DSA key fingerprint is 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c.
Are you sure you want to continue connecting (yes/no)? 

yes를 입력하여 계속 진행합니다. 이렇게 하여 다음에 메시지에서 보이듯이 알려진 호스트의 목록에 해당 서버가 추가됩니다:

Warning: Permanently added 'penguin.example.net' (RSA) to the list of known hosts.

다음으로 원격 컴퓨터에 접속하기 위한 암호를 입력하셔야 합니다. 암호를 입력하시면, 원격 컴퓨터의 쉘 프롬프트가 나타납니다. 특별히 사용자명을 지정하지 않으시면, 로컬 클라이언트 컴퓨터에서 로그인하셨던 사용자명이 원격 컴퓨터로 전달됩니다. 다른 사용자명을 지정하기 위해서는 다음 명령을 사용하십시오:

ssh username@penguin.example.net

ssh -l 사용자명 penguin.example.net 구문을 사용하셔도 됩니다.

ssh 명령을 사용하여 쉘 프롬프트에 로그인할 필요가 없이 원격 컴퓨터 상에서 명령을 실행할 수 있습니다. 명령어 구문은 ssh hostname command 입니다. 예를 들어 만일 ls /usr/share/doc 명령을 penguin.example.net 원격 컴퓨터에서 실행하고 싶다면, 쉘 프롬프트에서 다음과 같은 명령을 입력합니다:

ssh penguin.example.net ls /usr/share/doc

올바른 암호를 입력하시면 원격 디렉토리 /usr/share/doc의 내용을 출력 후, 여러분의 로컬 쉘 프롬프트로 되돌아 옵니다.

15.3.2. scp 명령어 사용하기

scp 명령은 컴퓨터 사이에 안전하고 암호화된 연결을 통하여 파일을 전송하는데 사용됩니다. rcp와 유사합니다.

원격 시스템으로 로컬 파일을 전송할 때 사용되는 일반적인 명령 구문은 다음과 같습니다:

scp localfile username@tohostname:/newfilename

여기서 localfile은 소스를 지정하며 username@tohostname:/newfilename은 파일이 전단될 목적지를 지정합니다.

예를 들어 penguin.example.net의 사용자 계정으로 shadowman 로컬 파일을 전송하기 위해서는, 쉘 프롬프트에서 다음과 같이 입력합니다. (다음 명령에서 username을 여러분의 계정명으로 교체하십시오):

scp shadowman username@penguin.example.net:/home/username

위의 명령은 shadowman 로컬 파일을 penguin.example.net 컴퓨터의 /home/username/shadowman으로 전송할 것입니다

원격 컴퓨터에서 로컬 시스템으로 파일을 전송하기 위해서는 다음과 같은 명령 구문이 사용됩니다:

scp username@tohostname:/remotefile /newlocalfile

여기서 remotefile은 소스를 지정하며, newlocalfile은 파일이 전달될 목적지를 지정합니다.

여러 개의 파일을 소스 파일로 지정 가능합니다. 예를 들어 /downloads 디렉토리의 내용을 원격 컴퓨터 penguin.example.net 상의 기존 uploads 디렉토리로 전송하기 위해서는, 쉘 프롬프트 상에서 다음 명령을 입력합니다:

scp /downloads/* username@penguin.example.net:/uploads/

15.3.3. sftp 명령어 사용하기

sftp 유틸리티는 상호 대화식의 보안 FTP 세션을 여는데 사용됩니다. ftp와 유사하지만 sftp는 암호화된 보안 접속을 사용한다는 차이점이 있습니다. 일반적인 명령 구문은 sftp username@hostname.com 입니다. 일단 사용자 인증이 끝나면, FTP에서 사용되는 것과 유사한 명령어를 사용하실 수 있습니다. 사용 가능한 명령어 목록을 보시려면 sftp 메뉴얼 페이지를 참조하시기 바랍니다. 메뉴얼 페이지를 읽기 위해서는, 쉘 프롬프트에서 man sftp 명령을 실행합니다. sftp 유틸리티는 OpenSSH 2.5.0p1 이후 버전에서만 사용 가능합니다.

15.3.4. 키 쌍 생성하기

ssh, scp, 또는 sftp 명령을 사용하여 원격 컴퓨터에 접속할 때마다 암호를 입력하는 것을 원치 않으시면, 인증 키 쌍 (authorization key pair)을 생성하시면 됩니다.

각각의 사용자를 위한 키를 생성하셔야 합니다. 원격 컴퓨터에 접속하려는 사용자를 위한 키를 생성하시려면, 다음과 같은 단계를 따르십시오. 만일 루트로서 키를 생성하시면, 루트 사용자만이 그 키를 사용할 수 있습니다.

OpenSSH 3.0 버전 이후로 ~/.ssh/authorized_keys2, ~/.ssh/known_hosts2, /etc/ssh_known_hosts2 파일은 사용되지 않습니다. SSH 프로토콜 1 과 2는 ~/.ssh/authorized_keys, ~/.ssh/known_hosts, /etc/ssh/ssh_known_hosts 파일을 공유합니다.

Red Hat Linux 9은 SSH Protocol 2과 RSA 키를 기본으로 사용합니다.

작은보힌트
 

Red Hat Linux를 재설치하시는 경우 생성된 키 쌍을 저장하기 위해서는 홈 디렉토리에 위치한 .ssh 디렉토리를 백업하십시오. 재설치가 완료되면 이 디렉토리를 홈 디렉토리로 복구합니다. 루트를 포함한 모든 사용자의 키 쌍을 동일한 방법으로 저장 가능합니다.

15.3.4.1. 2.0 버전에 사용되는 RSA 키 쌍 생성하기

SSH 프로토콜 2.0 버전에 사용되는 RSA 키 쌍을 생성하기 위해서는 다음과 같은 단계를 따르십시오. OpenSSH 2.9 이후 버전에서 2.0 버전 SSH 프로토콜이 기본으로 사용됩니다.

  1. 2.0 버전 프로토콜과 함께 사용될 RSA 키 쌍을 생성하기 위해서는 쉘 프롬프트에서 다음과 같은 명령을 입력합니다:

    ssh-keygen -t rsa

    ~/.ssh/id_rsa의 기본 파일 위치를 수용합니다. 여러분의 사용자 계정 암호와는 다른 암호 문구 (passphrase)를 입력하신 후 확인을 위해 한번 더 입력해 주십시오.

    공개키는 ~/.ssh/id_rsa.pub 파일에 기록되고 비밀키는 ~/.ssh/id_rsa 파일에 기록됩니다. 절대로 여러분의 개인키를 다른 사람과 공유해서는 안됩니다.

  2. chmod 755 ~/.ssh 명령어를 사용하여 .ssh 디렉토리에 대한 허가를 변경합니다.

  3. ~/.ssh/id_rsa.pub 파일의 내용을 연결할 컴퓨터의 ~/.ssh/authorized_keys 파일로 복사합니다. 만일 ~/.ssh/authorized_keys 파일이 존재하지 않는 경우, ~/.ssh/id_rsa.pub 파일을 다른 컴퓨터의 ~/.ssh/authorized_keys 파일로 복사하셔도 됩니다.

  4. GNOME을 실행 중이라면 15.3.4.4 절로 넘어 가십시오. X 윈도우 시스템을 실행하지 않는 경우에는 15.3.4.5 절로 넘어 가십시오.

15.3.4.2. 2.0 버전에 사용되는 DSA 키 쌍 생성하기

SSH 프로토콜 2.0 버전에 사용될 DSA 키 쌍을 생성하기 위해서는 다음과 같은 단계를 따르십시오.

  1. 2.0 버전 프로토콜과 함께 사용될 DSA 키 쌍을 생성하기 위해서는 쉘 프롬프트에서 다음과 같은 명령을 입력합니다:

    ssh-keygen -t dsa

    ~/.ssh/id_dsa의 기본 파일 위치를 수용합니다. 여러분의 사용자 계정 암호와는 다른 암호 문구를 입력하신 후 확인을 위해 한번 더 입력해 주십시오.

    작은보힌트
     

    암호 문구는 사용자 인증을 위해 사용되는 문자열로서 단어와 문자로 이루어 졌습니다. 문자열은 스페이스와 탭을 사용할 수 있다는 점에서 암호와 차이가 있습니다. 암호 문구는 한 단어가 아닌 하나의 문구로 이루어졌기 때문에 보통 암호보다 더 깁니다.

    공개키는 ~/.ssh/id_dsa.pub 파일에 기록되고 비밀키는 ~/.ssh/id_dsa 파일에 기록됩니다. 절대로 여러분의 비밀키를 다른 사람과 공유해서는 안됩니다.

  2. chmod 755 ~/.ssh 명령어를 사용하여 .ssh 디렉토리에 대한 허가를 변경합니다.

  3. ~/.ssh/id_dsa.pub 파일의 내용을 연결할 컴퓨터의 ~/.ssh/authorized_keys 파일로 복사합니다. 만일 ~/.ssh/authorized_keys 파일이 존재하지 않는 경우, ~/.ssh/id_dsa.pub 파일을 다른 컴퓨터의 ~/.ssh/authorized_keys 파일로 복사하셔도 됩니다.

  4. GNOME을 실행 중이라면 15.3.4.4 절으로 넘어 가십시오. X 윈도우 시스템을 실행하지 않는 경우에는 15.3.4.5 절로 넘어 가십시오.

15.3.4.3. 1.3 과 1.5 버전에 사용되는 RSA 키 쌍 생성하기

SSH 프로토콜 1.0 버전에서 사용되는 RSA 키 쌍을 생성하기 위해서는 다음과 같은 단계를 따르십시오. 단순히 DSA를 사용하는 시스템들을 연결하는 경우라면 RSA 1.3 버전과 RSA 1.5 버전 키 쌍이 필요하지 않습니다.

  1. RSA (버전 1.3과 1.5 프로토콜) 키 쌍을 생성하기 위해서는 쉘 프롬프트 상에서 다음과 같은 명령을 입력하십시오:

    ssh-keygen -t rsa1

    ~/.ssh/identity의 기본 파일 위치를 수용합니다. 여러분의 사용자 계정 암호와는 다른 암호 문구를 입력하신 후 확인을 위해 한번 더 입력해 주십시오.

    공개키는 ~/.ssh/identity.pub 파일에 기록되고 개인키는 ~/.ssh/identity 파일에 기록됩니다. 절대로 여러분의 개인키를 다른 사람과 공유해서는 안됩니다.

  2. chmod 755 ~/.ssh 명령어를 사용하여 .ssh 디렉토리에 대한 허가를 변경하고 chmod 644 ~/.ssh/identity.pub 명령어를 사용하여 여러분의 키에 대한 허가를 변경하시기 바랍니다.

  3. ~/.ssh/identity.pub 파일의 내용을 연결할 컴퓨터의 ~/.ssh/authorized_keys 파일로 복사합니다. 만일 ~/.ssh/authorized_keys 파일이 존재하지 않는 경우, ~/.ssh/identity.pub 파일을 다른 컴퓨터의 ~/.ssh/authorized_keys 파일로 복사하셔도 됩니다.

  4. GNOME을 실행 중이라면 15.3.4.4 절으로 넘어 가십시오. GNOME을 실행하지 않는 경우에는 15.3.4.5 절로 넘어 가십시오.

15.3.4.4. GNOME을 사용하여 ssh-agent 설정하기

ssh-agent 유틸리티를 사용하여 ssh와 scp 연결 때마다 암호 문구를 입력할 필요가 없도록 암호 문구를 저장할 수 있습니다. GNOME을 사용하신다면 openssh-askpass-gnome 유틸리티는 사용자가 GNOME에 로그인할 때 암호 문구를 요청한 후 그 사용자가 GNOME에서 로그 아웃할 때까지 그 암호 문구를 저장해 놓습니다. 따라서 GNOME 세션을 사용하는 동안 ssh 또는 scp 연결을 위하여 암호나 암호 문구를 입력하실 필요가 없습니다. GNOME을 사용하지 않으신다면 15.3.4.5 절를 참조해 보십시오.

GNOME 세션을 사용하는 동안 암호 문구를 저장하기 위해서는 다음의 단계를 따르십시오

  1. openssh-askpass-gnome 패키지가 설치되어 있어야 합니다; 패키지가 설치되어 있는지 여부를 알아보기 위해서 rpm -q openssh-askpass-gnome 명령을 사용합니다. 만일 설치되어 있지 않다면, Red Hat CD-ROM 세트나 Red Hat FTP 미러 사이트, 또는 Red Hat Network를 사용하여 해당 패키지를 설치하시기 바랍니다.

  2. 패널에서 주 메뉴 버튼 => 환경 설정 => 추가 환경 설정 => 세션을 선택하신 후 시작 프로그램 탭을 클릭하시기 바랍니다. 추가 버튼을 클릭하시고 시작 명령 텍스트 입력란에 /usr/bin/ssh-add를 입력하십시오. 이 명령이 가장 마지막에 실행되도록 다른 기존의 명령보다 우선순위 번호를 높게 설정합니다. ssh-add 명령에 대한 우선순위 번호는 70 또는 그 이상의 숫자가 적합합니다. 우선순위 번호가 높을 수록, 실행되는 우선순위는 낮아집니다. 목록에 다른 프로그램이 있다면 이 프로그램에게 가장 낮은 우선순위를 주어야 합니다. 종료 버튼을 클릭하여 프로그램을 종료합니다.

  3. GNOME에서 로그 아웃한 후 다시 GNOME으로 로그인 하십시오; 즉, X를 재시작하십시오. GNOME이 시작된 후 암호 문구를 요구하는 대화 상자가 나타날 것입니다. 암호 문구를 입력하십시오. 만일 DSA와 RSA 키 쌍이 모두 설정되었다면, 두 키 쌍에 대한 암호 문구를 요청할 것입니다. 이후 ssh, scp, sftp 명령을 사용하실 경우 암호를 입력하실 필요가 없습니다.

15.3.4.5. ssh-agent 설정하기

ssh-agent 유틸리티를 사용하여 ssh와 scp 연결 때마다 암호 문구를 입력할 필요가 없도록 암호 문구를 저장할 수 있습니다. X 윈도우 시스템을 실행하지 않는 경우에는 쉘 프롬프트 상에서 다음의 단계를 따르십시오. 만일 GNOME을 사용하시는 경우 로그인시 암호를 입력하지 않아도 되도록 설정하시려면 (15.3.4.4 절 참조), Xterm과 같은 터미널 창에서 이 절차를 따르십시오. GNOME이 아닌 X를 실행 중이라면 터미널 창에서 이 절차를 따르시면 됩니다. 하지만 암호 문구는 전체 설정이 아니므로 해당 터미널 창에서만 기억됩니다.

  1. 쉘 프롬프트에서 다음의 명령을 입력하십시오:

    exec /usr/bin/ssh-agent $SHELL
  2. 그 후 다음의 명령을 입력합니다:

    ssh-add 

    그리고 암호 문구를 입력하십시오. 한개 이상의 키 쌍이 설정되었다면, 각각의 키 쌍에 대한 암호 문구가 요구될 것입니다.

  3. 로그 아웃 후에는 암호 문구는 더 이상 기억되지 않습니다. 가상 콘솔에 로그인할 때마다 또는 터미널 창을 열 때마다 앞에서 언급된 두 명령을 실행하셔야 합니다.