Secure Shell (한국어)

From ArchWiki
Revision as of 01:30, 8 January 2010 by Binple (talk | contribs) (1단계: 연결하기)
Jump to: navigation, search

Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end


SSH 또는 Secure Shell은 네트워크상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 통신규약을 가리킵니다. 기존의 rsh, rlogin, 텔넷 등을 대체하기 위해 설계되었으며, 강력한 인증 방법 및 안전하지 못한 네트워크에서 안전하게 통신을 할 수 있는 기능을 제공합니다. 기본적으로는 22번 포트를 사용합니다.

SSH는 암호화 기법을 사용하기 때문에, 통신이 노출된다 하더라도 이해할 수 없는 암호화된 문자로 보입니다.


OpenSSH (OpenBSD Secure Shell) is a set of computer programs providing encrypted communication sessions over a computer network using the ssh protocol. It was created as an open source alternative to the proprietary Secure Shell software suite offered by SSH Communications Security. OpenSSH is developed as part of the OpenBSD project, which is led by Theo de Raadt.

OpenSSH is occasionally confused with the similarly-named OpenSSL; however, the projects have different purposes and are developed by different teams, the similar name is drawn only from similar goals.

OpenSSH 설치

# pacman -Sy openssh

SSH 설정


SSH 클라이언트 설정은 Template:Filename 파일에서 설정할 수 있습니다.

아래는 예시입니다.


Protocol 설정을 2로 하는 것을 권장합니다.

Protocol 2

Protocol 1은 다소 불안정한 것으로 간주합니다.


SSH 데몬은 Template:Filename 파일에서 설정할 수 있습니다.

아래는 예시입니다.


일부 사용자에 대해서만 사용을 허용하려면 줄을 추가하면 됩니다.

AllowUsers    사용자1 사용자2

이렇게 다음과 같이 보이는 줄들을 변경하면 원하는 설정을 할 수 있습니다.

Protocol 2
LoginGraceTime 120
PermitRootLogin no # (put yes here if you want root login)

You could also uncomment the BANNER option and edit Template:Filename for a nice welcome message.

Tip: 기본 22번 포트 말고도 다른 포트로도 변경 가능합니다.(security through obscurity).

Even though the port ssh is running on could be detected by using a port-scanner like nmap, changing it will reduce the number of log entries caused by automated authentication attempts.

접속 허용 방법

Template:Box Note

외부에서 접속하려면 Template:Filename 파일에서 다음을 추가합니다.

# 모든 허용
sshd: ALL

# 또는 특정 IP만 허용

# 또는 특벙 범위만 허용

# 또는 특정 IP 대역만 허용
sshd: 192.168.1.

Template:Filename 파일을 확인하여 다음처럼 조정할 수 있습니다.


외부로 접속할 수 있으며 외부에서 내부로 접속할 수 있습니다.

새로울 설정을 이용하여 시작하려면 데몬을 재시작하면 됩니다.

# /etc/rc.d/sshd restart

부팅 시 시작하기

부팅 시 sshd 데몬을 시작하려면 Template:Filename 파일에서 DAEMONS 항목에 sshd를 추가합니다.

DAEMONS=(... ... sshd ... ...)

데몬을 시작, 정지, 재시작을 하기 위한 명령어는 다음과 같습니다.

# /etc/rc.d/sshd {start|stop|restart}

서버 접속하기

서버에 접속하려면 다음과 같습니다.

$ ssh -p port user@server-address

기타 정보

암호화된 터널

이것은 무선 환경에서 연결하는데 유용합니다. 당신이 원하는 건 집이나 회사처럼 안전한 곳에서 돌아가는 SSH 서버일 것입니다. 동적인 DNS나 기억하지 않아도 되는 IP 주소에서 유용할 것입니다.

1단계: 연결하기

당신이 사용하는 터미널에서 다음 명령어를 사용합니다.

$ ssh -ND 4711 user@host

여기서 Template:Codeline은 당신의 계정이며 Template:Codeline는 접속할 서버입니다. 암호를 물어보며 연결될 것입니다. Template:Codeline 옵션은 대화형 프롬프트 플래그를 해제합니다. 그리고 Template:Codeline 옵션은 내용을 수신할 로컬 컴퓨터의 포트를 지정합니다. (원한다면 언제든지 포트 번호를 선택할 수 있습니다.)

위 작업을 쉽게 하려면 Template:Filename 파일에 다음과 같이 추가합니다.

alias sshtunnel="ssh -ND 4711 -v user@host"

자세한 정보를 위해 Template:Codeline 옵션을 넣으시면 됩니다. 연결되는 내용을 확인할 수 있게 됩니다. 지금 Template:Codeline 명령어를 실행해보세요.

Step 2: Configure your Browser (or other programs)

The above step is completely useless if you don't configure your web browser (or other programs) to use this newly created socks tunnel.

  • For Firefox: Edit → Preferences → Advanced → Network → Connection → Setting:
Check the "Manual proxy configuration" radio button, and enter "localhost" in the "SOCKS host" text field, and then enter your port number in the next text field (I used 4711 above).
Make sure you select SOCKS4 as the protocol to use. This procedure will not work for SOCKS5.

Enjoy your secure tunnel!

X11 Forwarding

To run graphical programs through a SSH connection you can enable X11 forwarding. An option needs to be set in the configuration files on the server and client.

Install xorg-xauth on the server:

# pacman -Sy xorg-xauth

To use the forwarding, log on to your server through ssh:

# ssh -X -p port user@server-address

If you receive errors trying to run graphical applications try trusted forwarding instead:

# ssh -Y -p port user@server-address

You can now start any X program on the remote server, the output will be forwarded to your local session:

# xclock

Mounting a Remote Filesystem with SSHFS

Install sshfs

# pacman -Sy sshfs

Load the Fuse module

# modprobe fuse

Add fuse to the modules array in Template:Filename to load it on each system boot.

Mount the remote folder using sshfs

# mkdir ~/remote_folder
# sshfs USER@remote_server:/tmp ~/remote_folder

The command above will cause the folder /tmp on the remote server to be mounted as ~/remote_folder on the local machine. Copying any file to this folder will result in transparent copying over the network using SFTP. Same concerns direct file editing, creating or removing.

When we’re done working with the remote filesystem, we can unmount the remote folder by issuing:

# fusermount -u ~/remote_folder

If we work on this folder on a daily basis, it is wise to add it to the Template:Filename table. This way is can be automatically mounted upon system boot or mounted manually (if Template:Codeline option is chosen) without the need to specify the remote location each time. Here is a sample entry in the table:

sshfs#USER@remote_server:/tmp /full/path/to/directory fuse    defaults,auto    0 0

Keep Alive

Your ssh session will automatically log out if it is idle. To keep the connection active (alive) add this to ~/.ssh/config or to /etc/ssh/ssh_config on the client.

ServerAliveInterval 5

This will send a "keep alive" signal to the server every 5 seconds. You can usually increase this interval, and I use 120.

Links & References