필자의 노트북에 가상머신으로 리눅스를 설치하고 시간이 꽤 많이 흘렀다. 노트북 사양이 좋지 않아서, 가상머신만 돌리면 키보드에서 버퍼링이 심하게 일어나서, 지금까지는 putty와 xshell로 원격 접속해서 사용하곤 했다. 그러다가, Window 10에서 SSH 서비스를 제공한다는 것을 알게되어 곧바로 설치하고 들뜬 마음으로 ssh로 리눅스 접근을 시도해본다. 그런데... 안된다. cmd창에 열심히 ssh를 입력해도, 돌아오는 것이라고는
위와 같이 필자의 울화통이 터지게 하는 문구 뿐이다. 리눅스는 ssh 데몬(윈도우의 서비스 같은 개념이다)을 기본으로 설치하고 있어서인지, 명령어가 바로 작동하는데, 어째 윈두오는 설치를 했음에도 불구하고 실행이 안되는 것인가??
1. 서비스 어플리케이션은, 리눅스 데몬처럼 재구동 과정이 필요하다.
아마 리눅스를 다루지 않은 사람이라면 위의 문장이 이해가 되지 않을 것이다. 리눅스 운영체제는 자신이 돌리려는 프로그램을 관리하는 데몬(서비스)이라는 녀석이 존재하고, 이 녀석이 구동하는 프로그램은 설정이 바뀔때마다 일일이 재구동 과정을 거쳐야 변경된 설정 내용이 적용된다.
리눅스는 현재 많은 사람들이 사용하고 있는 윈도우와 매우 다른 모습을 띄고 있지만, 리눅스의 전신이 되는 유닉스는 윈도우와도 밀접한 도스의 조상격이 된다. 유닉스, 리눅스, 도스는 모두 검은 화면에 흰색 글씨만 가득한, 필자 나이대의 사람들이 매우 어린 시절에나 볼 수 있었던 형태의 운영체제다. 그리고 윈도우는 검은 바탕에 흰색 글씨만 보이는 도스를 그래픽적으로 보기 좋게 만들어 낸 운영체제이고...(그래픽 인터페이스의 편리함 때문에 전 지구의 컴퓨터에는 대부분 윈도우가 깔리게 된 것이다)
알기 쉽게 정리하자면, 유닉스로부터 리눅스와 도스가 파생되었고, 윈도우는 도스를 쉽게 쓰기 위해 그래픽을 추가한 것이다. 따라서 윈도우의 특성 중 일부는 리눅스와도 매우 유사하게 나타날 수 밖에 없다. 그 중 하나가, 서비스 설치 또는 설정이 변경되면, 서비스를 재구동 시켜야 변경 내용이 적용된다는 것이고...
이 말이 최종적으로 의미하는 것은 다음과 같다.
"서비스 설치했으면 컴퓨터 재부팅 해!!"
< 설치 과정 >
(1) 윈도우 검색창에서 앱 및 기능을 검색한 뒤,
(2) 선택적 기능 관리를 클릭한다.
(3) 상단의 기능 추가 버튼을 누르고
(4) 선택적 기능에서, 검색된 OpenSSH 클라이언트를 설치한다.(클릭하면 설치 버튼이 나타난다)
(5) 설치가 완료되면, 컴퓨터를 재부팅한다.
2. cmd 창에서의 경로 설정
윈도우에서 검색 버튼(윈도우 10에서는 돋보기 모양이 보일것이다. 왼쪽 하단에)을 누르고 cmd 또는 명령 프롬프트라고 검색하면, 검은 바탕에 흰 글씨가 적힌 창이 하나 나타난다. 필자는 이 창에서 ssh 명령어를 사용하여 가상머신의 리눅스로 원격 접속을 시도하려 했던 것인데.... ssh 클라이언트를 설치했음에도 불구하고, ssh 명령어가 들어가지를 않는다.
원인이 뭔지 고민해보았다. ssh 명령어를 입력하면, cmd는 그 명령어를 명령어가 모여있는 특정 폴더에서 찾아 실행을 하는데, ssh가 설치될 때 명령어 실행 파일이 다른 곳에 설치되었을 수도 있겠다라는 생각이 들었다.(리눅스에서도 비슷한 일이 일어난다. 자세한 것은 추후 기회가 된다면 포스팅 하겠다)
설치 완료된 open ssh 파일이 어디에 숨어있는지 찾아보기로 했다. 그림판이나 메모장같은 대부분의 윈도우 기본 프로그램, 또는 cmd의 기본 명령어 대부분은 아래의 폴더에 설치되어 있다.
-> C:\Windows\System32
파일이 워낙 많아서 다 언급하기는 힘들지만, 필자가 자주 사용하는 ping명령어나, 계산기(calc), 그림판(paint) 등이 이 system 32라는 폴더에 있다. openssh 역시, 윈도우의 기본 앱으로 설치가 된 것이니 이곳에 관련 파일이 존재하지 않을까?? 그리고 그 판단은 정확했다.
그런데, 기본 명령어가 저장된 폴더에 openssh파일이 버젓이 존재함에도 불구하고 왜 ssh명령어가 작동하지 않는 걸까?? 이를 해결하기 위해 cmd창에서 직접 폴더로 이동해 명령어를 실행해보기로 했다.
결국, 명령어가 작동하지 않는 이유는 명령어가 위치한 폴더에 정확히 위치해야 하는 ssh 명령 실행파일이, 한 폴더 더 깊숙히 들어가 있어서 발생한 일이었다. 그런데, 그런다고 이 명령파일을 함부로 끄집어 내오기가 약간 꺼림칙했다. openssh파일에는 ssh명령어 외에도 관련된 여러 명령어가 같이 묶여서 존재하고 있었기 때문이다.
결국, cmd 프로그램이 명령어를 인식할 수 있는 경로를 이 폴더로 추가해 주어야겠다는 결론이 들었다. 그리고 경로를 추가한 뒤, ssh 명령어를 실행하니,
잘 작동한다.
< 명령어 검색 경로(PATH) 설정 방법 >
(1) cmd 창에 "echo %PATH%"를 입력해보자(따옴표 제외). 그럼 폴더 경로 여러개가 세미콜론(;)으로 구분되어 나열되어 있는 것을 볼 수 있다. 하지만 ssh 명령어가 위치한 폴더는 이곳에 없다.
(2) 바탕화면 내 컴퓨터를 우클릭하여 속성으로 들어간다. 바탕화면에 내 컴퓨터 아이콘이 없을 시, 바탕화면 우클릭 -> 개인 설정 -> "테마로 이동" -> "바탕화면 아이콘 설정"을 클릭하고 내 컴퓨터를 선택한다.
(3) 좌측의 고급 시스템 설정을 클릭한다.
(4) 우측 하단의 환경변수를 클릭한다.
(5) 시스템 변수에서(필자 혼자 쓰는 컴퓨터라 시스템 변수에서 설정했다) PATH 값을 선택하고 편집을 클릭한다.
(6) "새로 만들기"를 클릭하고, ssh명령어가 위치한 폴더의 경로를 입력한뒤 확인을 누른다.
(7) ssh 명령어가 cmd 창에서 작동하는지 확인한다.
FIN
* 2019년 7월 2일 추가 내용
글을 쓰고 나서 곰곰히 생각해보니, 재부팅과정은 불필요한듯 하다. 왜냐하면, Python이나 Java 프로그램도 비슷한 과정을 거쳐 설치를 하는데, 얘들은 재부팅 과정 없이, 경로 설정만으로도 충분히 명령어가 잘 실행되었기 때문이다... 문제 해결을 위해 이 글을 보러 오신 분들은, 우선 PATH 경로부터 설정하고, 그래도 안 된다면 재부팅을 해 보길 권한다.
'ОКБ (실험 설계국) > Trouble Shooting' 카테고리의 다른 글
6. [CentOS7] vsftpd 소스파일 설치 에러 해결 방법 (0) | 2019.08.23 |
---|---|
5. Android Linux에 httpd 설치하기 (0) | 2019.08.13 |
4. Android에 설치한 Linux에서 ping 사용하기 (0) | 2019.08.12 |
3. Busybox에 Systemctl 명령어가 보이지 않는데... (0) | 2019.07.28 |
2. 리눅스 설치를 위한 스마트폰 루팅(SHV-E275S) (0) | 2019.07.21 |
댓글