Secure Shell 튜토리얼
Secure Shell 시작하기
수색…
비고
SSH (Secure Shell)는 안전하지 않은 네트워크 (인터넷)를 통한 지점 간 통신을위한 암호화 프로토콜입니다. 옛날에 사용 된 프로토콜 ( rlogin , rsh , telnet )은 사용 되지 않습니다 .
일반적으로 데이터 센터 또는 사설 클라우드 (Google Compute Engine, AWS 등)의 원격 서버, 가상 머신 또는 컨테이너에 연결하는 데 사용됩니다. 하지만 패스워드 대신 공개 키를 사용하여 저장소에 안전하게 액세스하고 업데이트하기 위해 git 과 함께 사용되기도합니다.
또한 ssh 내의 큰 주제를 언급하고 관련 주제에 링크해야합니다. ssh에 대한 문서는 새로운 것이므로 관련 주제의 초기 버전을 만들어야 할 수도 있습니다. 할 것
버전
| 번역 | 릴리즈 노트 | 출시일 |
|---|---|---|
| OpenSSH 7.3p1 | 최신 버전 | 2016-08-01 |
| OpenSSH 7.2p2 | 2016-03-09 | |
| OpenSSH 7.1p2 | 2016-01-14 | |
| OpenSSH 7.1 | 2015-08-21 | |
| OpenSSH 7.0 | 2015-11-08 | |
| OpenSSH 6.9 | 2015-07-01 | |
| OpenSSH 6.8 | 2015-03-18 |
설치 또는 설정
무료 버전의 SSH 프로토콜 구현 인 OpenSSH는 모든 Linux 배포판에서 사용할 수 있습니다. 서버 및 클라이언트 패키지로 구성됩니다.
설치
데비안 기반 리눅스에서는 다음을 사용하여 openssh 를 설치할 수 있습니다 :
# apt-get install openssh-server openssh-client
RHEL / CentOS에서 yum 을 사용해야합니다.
# yum install openssh-server openssh-clients
현재 Fedora는 yum 대신 dnf 사용하고 있습니다.
아치 리눅스에서는 pacman을 사용하십시오 :
# pacman -S openssh
OSX에서는 openssh 가 이미 설치되어 있어야합니다.
최신 버전을 사용하려면 brew에서 openssh 를 설치해야합니다.
# brew install openssh --with-brewed-openssl --with-keychain-support
Windows 용 TODO 지침
설정
openssh 클라이언트는 특별한 설정이 필요 없으며 설치 직후에 사용할 수 있습니다. 당신은 그 실행 시도 할 수 ssh remote 1, remote 실행중인 원격 호스트입니다 ssh 서버.
openssh 서버는 일반적으로 설치 후 시작되며 기본 설정이 적용됩니다. 그렇지 않은 경우, 다음을 사용하여 systemd 기반 시스템에서 시작할 수 있습니다.
데비안 기반 Linux (systemd 포함) :
# systemctl start ssh
RHEL / CentOS / Fedora 및 Arch Linux :
# systemctl start sshd
또는 신생 시스템에서
# service sshd start
구성
openssh 에는 /etc/ssh/ 아래에 구성 파일이 있습니다. 클라이언트는 ~/.ssh/config 에서도 클라이언트 구성을 읽습니다. 서버는 대부분의 기본값을 포함하고 간단한 키 - 값 쌍을 포함하는 sshd_config 파일을 사용하고 있습니다. 예:
Protocol 2
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
X11Forwarding yes
Subsystem sftp /usr/libexec/openssh/sftp-server
SSH 키 만들기
ssh-keygen을 사용하여 ssh 키를 만들 수 있습니다. 이것은 ssh 설치의 일부인 프로그램입니다. 그렇게하려면 그냥 실행하고 화면의 지시 사항을 따르십시오.
다음은 그 예입니다.
$ ssh-keygen
Generating public/private rsa key pair.
ssh 키 쌍이 저장 될 기본 디렉토리는 홈 디렉토리의 .ssh 폴더 안에 있으며 (유효한 경로를 지정하여 변경할 수 있습니다) 키 쌍의 기본 이름은 개인 키의 경우 id_rsa 이고 다음과 같은 경우 id_rsa.pub 입니다. 공개 키 :
Enter file in which to save the key (/home/nasreddine/.ssh/id_rsa): /home/my_folder/my_ssh_key
비밀번호를 입력하여 무단 사용으로부터 SSH 키를 보호 할 수 있습니다. 선택 사항이지만 암호를 사용하는 것이 좋습니다. 다른 명령 프로그램과 마찬가지로 암호를 입력하면 화면에 아무 것도 표시되지 않지만 기록됩니다.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
암호를 입력하면 ssh-keygen이 키를 생성하고 선택한 경로에 저장합니다.
Your identification has been saved in /home/my_folder/my_ssh_key.
Your public key has been saved in /home/my_folder/my_ssh_key.pub.
다 끝났어. 이제 ssh 키를 사용할 준비가되었습니다.
SSH로 기계를 만드는 방법
SSH를 사용하여 시스템의 사용자 계정에 로그인하려면 ssh username@ip_address 명령을 사용할 수 있습니다. 암호를 묻습니다. 올바른 암호를 입력하면 해당 컴퓨터의 해당 사용자 쉘에 연결됩니다. 그렇지 않으면 암호를 다시 입력하라는 메시지가 나타납니다.
예를 들어
root@dev10:~# ssh [email protected]
[email protected]'s password:
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-31-generic x86_64)
Last login: Fri Jul 22 18:33:27 2016 from 10.11.50.10
root@dev2:~#
특정 ssh 키를 사용하여 시스템에 연결하려면 ssh -i /path/to/ssh_secret_key username@host
맨 처음 시스템에 연결하면 대상 시스템의 지문 을 확인하도록 요청합니다. 이것은 man-in-the-middle 공격 을 피하기위한 보안 메커니즘입니다. 대상 시스템에서이 명령을 실행하여 대상 시스템의 지문을 볼 수 있습니다.
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
둘 다 동일하면 "예"를 입력 할 수 있습니다. 암호 프롬프트로 진행합니다.
예:
root@dev10:~# ssh [email protected]
The authenticity of host '10.11.50.3 (10.11.50.3)' can't be established.
ECDSA key fingerprint is dd:a3:de:cd:5b:01:cd:0b:b6:bc:b3:09:c2:c8:1a:68.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.11.50.3' (ECDSA) to the list of known hosts.
[email protected]'s password:
Last login: Fri Jul 22 17:45:09 2016 from 10.11.1.71
root@dev2:~#
서버 사용자의 인증 된 키 목록에 공개 키 추가
서버로 ssh 하기 위해서는 ID의 공개 키가 신뢰 된 키 목록에 추가되어야합니다. 가장 일반적으로 이것은 사용자별로 수행됩니다.
ssh-copy-id -i ~/.ssh/<identity>.pub <user>@<hostname>
수동으로 수행 할 수도 있습니다.
cat ~/.ssh/<identity>.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
이렇게하면 ssh 호출에 ID 파일을 전달할 때 사용자의 암호를 제공 할 필요없이 로그인 할 수 있습니다.
암호를 사용하여 스크립트에서 연결하기
ssh 연결을 실제로 스크립트 할 필요가있을 때 암호를 ssh 명령으로 파이프하는 것은 작동하지 않습니다 ( echo passw0rd | ssh host ). 이는 암호가 표준 입력에서 읽히지 않지만 TTY (텔레 프린터, 텔레타이프, Teletype은 역사적인 이유로 읽음) 때문입니다.
그러나이 문제를 해결하는 sshpass 도구가 있습니다. 매개 변수, 파일 또는 환경 변수에서 암호를 읽을 수 있습니다. 그러나이 옵션들 중 어느 것도 암호에 대한 보안 요구 사항을 만족시키지 못합니다!
$ sshpass -p passw0rd ssh host
$ sshpass -f /secret/filename ssh host
$ SSHPASS=passw0rd sshpass -e ssh host
명령 줄 옵션은 다른 사용자가 ps 에서 볼 수 있습니다 (런타임 중에는 마스크되었지만 시작 시간에는 그렇지 않으므로 의존 할 수 없음).
... 23624 6216 pts/5 Ss Aug30 0:00 \_ /bin/bash
... 12812 1988 pts/5 S+ 08:50 0:00 | \_ sshpass -p passw0rd ssh host
... 45008 5796 pts/15 Ss+ 08:50 0:00 | \_ ssh host
프로세스의 환경 변수는 /proc/PID/environ 파일을 사용하는 시스템의 다른 프로세스에서도 액세스 할 수 있습니다.
마지막으로, 파일에 암호를 저장하는 것이 가장 좋은 생각 일지 모르지만 다른 예제에서 설명한대로 키를 사용하는 것이 ssh 를 사용하는 기본 방법입니다.
구성 파일
OpenSSH 구성 파일은 ssh 클라이언트가 실행될 때마다 적용되어야하는 구성에 사용됩니다. 대부분의 명령 행 옵션은 설정 파일에 넣을 수 있습니다.
OpenSSH는 다음 소스의 구성을 순서대로 사용합니다.
- 명령 행 옵션
- 사용자 설정 파일
~/.ssh/config - 시스템 전체 구성 파일
/etc/ssh/ssh_config
구성 옵션은 구성 파일에 하나씩 나열됩니다.
# This is a comment.
# Parameter can be specified like this, separated with white space.
StrictHostKeyChecking ask
# Or parameter key and value may be separated with white space and =.
ForwardX11 = yes
# The parameter value can be quoted if it contains white space.
IdentityFile "/file system/path with/white space"
가능한 구성 매개 변수의 전체 목록은 여기에서 사용할 수 있습니다 .
설정 파일의 가장 유용한 기능 중 하나는 호스트 이름이나 주소를 기준으로 섹션화할 수 있다는 것입니다. 이 방법으로 다른 호스트에 대해 다른 구성을 가질 수 있습니다.
# Based on host name.
Host host1.domain.com
User user1
Host host2.domain.com
User user2
# Or wildcard matching name or ip.
Host *elastic-cloud.com 10.201.4.?
User user3
SSH 에이전트
긴 암호 문구를 설정하고 서버에 연결할 때마다 암호를 계속 입력하지 않으려면 컴퓨터에 로그인 한 상태에서 SSH 에이전트를 사용하여 암호를 저장할 수 있습니다.
백그라운드에서 ssh-agent를 시작하십시오 :
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-agent에 키를 추가하면 패스 프레이즈를 입력하라는 메시지가 나타납니다.
ssh-add ~/.ssh/matrix.ac
# Enter passphrase for /home/osaka/.ssh/matrix.ac:
# Identity added: /home/osaka/.ssh/matrix.ac (/home/osaka/.ssh/matrix.ac)
끝난. 이제 ssh [email protected] 에 ssh [email protected] 하면 암호를 입력 할 필요가 없습니다. gnome-keyring / seahorse, keychain 및 다른 키 관리자와 같은 프로그램을 사용하여이를 확장 할 수 있습니다.
