이 블로그는 로컬 머신에 있는 리눅스에 로그인하는 것이 전제로 작성되었으나, 네트워크만 연결되어 있다면 다른 머신에 있는 리눅스에 로그인하는 것도 가능하다. 로컬 머신에서 다른 머신에 로그인하는 것을 원격 로그인이라 한다.
CLI 환경의 리눅스에서 원격 로그인하는 가장 대표적인 방법은 SSH이다.
SSH란 Secure Shell의 약자로 원격 머신과 통신하기 위한 프로토콜이다. 인증과 암호화 기능을 갖추고 있어 보안을 잘 유지하며 원격 머신과 통신할 수 있다. 보통 TCP 22번 포트(22/tcp)를 사용한다.
SSH는 원격 로그인뿐 아니라 파일을 전송할 때도 사용하는 프로토콜이다. 그 외에도 다양한 목적으로 사용되지만 여기서는 원격 로그인에 대해서만 알아보겠다.
윈도에서 SSH로 원격 로그인하려면 SSH 클라이언트를 별도로 설치해야 한다. 대표적인 SSH 클라이언트로 PuTTY와 Tera Term이 있다. 이들 클라이언트는 엄밀히 말해 SSH를 지원하는 터미널 에뮬레이터지만 단순히 SSH 클라이언트라고 생각해도 무방하다.
맥에서는 별도의 SSH 클라이언트를 설치할 필요가 없다. 기본으로 설치되어 있는 터미널을 실행한 뒤 다음과 같이 접속할 머신의 IP 주소를 지정하여 ssh 명령어를 실행하면 된다.
ssh <로그인 유저명>@<접속할 IP 주소>
이 때 처음 접속하는 리눅스 머신에 정말로 접속할지를 확인하는 프롬프트가 표시된다. 이는 대상 호스트를 등록하기 위한 절차로 yes를 입력한다. 그러면 암호를 입력하라고 표시되고 입력하면 로그인된다.
버추얼박스의 가상 머신에 SSH로 접속하려면 별도의 설정이 필요하다. 버추얼 박스의 포트 포워딩 기능을 사용하여 ssh로 접속하는 방법을 소개하겠다.
버추얼 박스로 만들어진 가상 머신의 네트워크 어댑터는 기본적으로 NAT 모드를 사용한다. 이 상태에서는 가상 머신의 네트워크와 호스트의 네트워크가 분리되어 있어 직접 접속할 수 없다. 그래서 포트 포워딩을 사용해야 하는데, 호스트의 2222/tcp를 게스트의 22/tcp(ssh)로 연결해보겠다.
포트 포워딩을 설정하려면 먼저 가상 머신을 정지한 뒤 버추얼박스의 메뉴 머신 -> 설정을 선택한다. 그리고 네트워크에서 어댑터 1 탭의 고급을 클릭한 뒤 포트 포워딩 버튼을 클릭한다.
포트 포워딩 설정 화면에서 + 버튼을 클릭하여 룰을 추가한다. 호스트 포트에 2222를, 게스트 포트에 22를 설정한다. 그러면 호스트의 2222/tcp가 게스트의 22/tcp에 연결된다.
info는 온라인 매뉴얼을 출력하는 명령어이다. man의 진보된 형태로 다음과 같은 장점이 있다.
대부분의 명령어에 대해 man보다 info가 더 상세한 내용을 담고 있다. 하지만 info 명령어를 다루는 방법은 꽤 복잡합니다. 그래서 아직까지 man이 없어지지 않고 info와 공존하고 있다. 하지만 man보다는 info를 참고해야 하는 경우가 많으므로 이번 장에서는 info 명령어의 사용법을 알아보겠다.
info <명령어 이름>
$ info find
Next: Invoking locate, Up: Reference
8.1 Invoking 'find'
============
...생략...
화면을 스크롤할 때는 space를 누르고, 종료하려면 q를 입력한다.
info로 출력되는 도큐먼트는 파일과 노드라는 두 요소로 구성된다.
파일은 이름 그대로 텍스트를 담고 있는 물리적인 파일을 의미하며 도큐먼트 하나에 해당한다. 앞서 find로 출력된 find 명령어의 도큐먼트 전체가 파일이다.
파일은 복수의 노드로 분할되어 있다. 노드는 내용에 따라 분할된 논리 단위로 책으로 따지면 장이나 절에 해당한다.
그리고 노드는 다른 노드에 대한 링크를 가질 수도 있다. 그래서 노드를 읽다가 다른 노드로 이동할 수 있는데 이것이 man과 다른 점이다.
man에서는 다른 도큐먼트를 읽으려면 일단 man 명령어를 종료하고 다시 실행해야 한다. 하지만 info에서는 명령어를 종료하지 않고도 다른 도큐먼트로 이동할 수 있다. 이는 HTML 페이지를 열람하는 것과 비슷하다.
노드는 계층 구조로 구성되어 있다. info 도큐먼트의 첫 행에는 다음 노드, 이전 노드, 상위 노드의 정보를 담은 노드 헤더가 표시된다.
info 도큐먼트의 최상위 노드의 이름은 Top이다. 현재 위치한 노드에서 u를 눌러 상위 노드로 이동하다 보면 Top에 도착하게 된다. 혹은 t를 입력하면 바로 Top 노드로 이동한다.
Next: Introduction, Up: (dir)
Top 노드로 이동하면 위와 같은 헤더가 표시된다. 여기서 Up을 보면(dir)이라고 표시되어 있다. (dir)은 dir 파일의 Top 노드를 의미하며 모든 info 트리의 꼭대기에 위치한 노드이다.
$ info
info에서 다른 노드로 이동하는 방법을 알아보겠다.
info로 도큐먼트를 읽다가 n을 입력하면 다음 노드로 이동한다. 그리고 p를 입력하면 이전 노드로 이동한다. info find를 실행하면 처음에 Invoking find라는 노드에 있다. 여기서 n을 한 번 입력하면 Invoking locate라는 다음 노드로 이동하게 된다.
이 때 n과 p로 이동하면 같은 레벨의 전후 노드로 이동하기 때문에 하위 노드는 건너뛰게 된다. 하위 레벨을 포함하여 다음 노드로 이동하려면 ]를, 이전 노드로 이동하려면 [를 입력한다.
따라서 모든 노드를 차례대로 보려면 ]를 사용하면 된다.
그리고 u를 누르면 상위 노드로 이동한다.
단축키 | 내용 |
---|---|
n | 동일 계층의 다음 노드로 이동 |
p | 동일 계층의 이전 노드로 이동 |
] | 하위 계층을 포함하여 다음 노드로 이동 |
[ | 하위 계층을 포함하여 이전 노드로 이동 |
u | 상위 노드로 이동 |
t | Top 노드로 이동 |
info 도큐먼트를 읽을 때 space를 누르면 한 화면 밑으로 스크롤한다. 노드 끝에서 space를 누르면 ]를 누를 때와 마찬가지로 다음 노드로 이동한다. 따라서 도큐먼트를 처음부터 끝까지 읽고 싶은 경우에는 space만 누르면 된다.
반대 반향으로 스크롤하려면 Backspace 또는 Delete를 누른다. 노드의 첫 부분에 있다면 [를 누른 것과 같이 이전 노드로 이동한다.
Ctrl+v를 눌러도 스크롤하지만 노드의 끝에서는 다음 노드로 이동하지 않는다. 그리고 Meta+v를 입력하면 반대 방향으로 스크롤한다.
단축키 | 내용 |
---|---|
Space | 한 화면씩 밑으로 스크롤. 노드의 맨 끝에서는 다음 노드로 이동 |
Backspace 또는 Delete | 한 화면씩 위로 스크롤. 노드의 맨 앞에서는 이전 노드로 이동 |
Ctrl+v | 한 화면씩 밑으로 스크롤 |
Meta+v | 한 화면씩 위로 스크롤 |
b, 또는 Meta+< | 노드의 첫 부분으로 이동 |
Meta+> | 노드의 끝 부분으로 이동 |
커맨드 | 내용 |
---|---|
Ctrl + n | 다음 행으로 이동 |
Ctrl + p | 이전 행으로 이동 |
Ctrl + f | 다음 글자로 이동 |
Ctrl + b | 이전 글자로 이동 |
Ctrl + a | 행의 맨 앞으로 이동 |
Ctrl + e | 행의 맨 끝으로 이동 |
info의 도큐먼트에는 다른 노드로의 링크를 포함할 수 있다. 링크를 포함하는 행은 *로 시작한다.
Ctrl + n등으로 커서를 링크를 이동하여 Enter를 누르면 해당 노드로 이동한다.
Tab을 누르면 다음 링크로 커서가 이동한다. 그리고 다른 노드로 이동한 뒤에 다시 원래 노드에 돌아가려면 l(L의 소문자)를 누른다.
단축키 | 내용 |
---|---|
Tab | 다음 링크로 커서 이동 |
Meta+Tab | 이전 링크로 커서 이동 |
Enter | 링크된 노드로 이동 |
l | 이전 노드로 복귀 |
info를 실행한 뒤 H를 누르면 화면이 위 아래로 나뉘어지면서 하단에 도움말이 표시된다. x를 누르면 이를 닫을 수 있다.
커맨드 | 내용 |
---|---|
H | 도움말 화면을 열어 info 명령어 목록 표시 |
x | 도움말 화면을 닫음 |
$ info info