Back

SSH config

기존에 사용하던 클라이언트 프로그램에 불편한점이 많아 OS에 이미 존재하는 터미널을 통해 SSH 접속을 시도하게 된다. 하지만, 터미널은 매 접속마다 호스트 주소, 계정명, 비밀번호를 입력해야 한다는 것을 알게 되었다. 그 사실에 좌절하던 중 인터넷에서 SSH config 라는 것을 만나게 된다.

왠지 이 SSH config에 접속정보를 저장해놓으면 편하게 꺼내서 사용할 수 있을 것만 같은 기분이 들었다.

이 SSH config에 대해 알기 전에 일단 모호하게 알고있는 SSH에 대해서 부터 알아보자.


SSH란

SSH, 즉 secure shell은 원격 시스템의 CLI에 연결하는데 사용되는 암호화된 연결 프로토콜이다.

Telnet과 다른점

기존에 사용하던 Telnet과는 다르게 보안적으로 우수하다.

기본적으로 TCP 23번 포트를 사용하는 Telnet과 다르게 TCP 22번 포트를 사용한다. 포트는 임의의 포트로 변경이 가능하다.

암호화 기술과 작동방식

SSH은 대칭 암호화, 비대칭 암호화, 해싱을 사용하여 호스트와 클라이언트 간의 안전한 정보전송을 하게된다.

SSH1, SSH2

클라이언트 프로그램으로 새로운 접속정보를 생성하려 할 때 SSH1, SSH2 두개가 있어서 당황한 적이 있는데 그 때의 기억이 난다.

SSH에는 SSH1과 SSH2 두가지 프로토콜이 있다. SSH1은 RSA 암호화를 사용하지만, SSH2는 RSA외에도 다양한 키교환 방법들을 지원한다.


사용 방법

내가 사용할 환경은 macOS다. UNIX기반으로 만들어진 macOS에서는 개발에 필요한 여러가지 툴들이 기본적으로 설치가 되어있기도 하며, 별도로 설치를 해야 하는 것들도 설치가 매우 간편하다.

이 macOS에서 SSH연결을 하기 위해서는 터미널에서 별도의 SSH 클라이언트 프로그램 설치 없이 SSH 연결이 가능하다.

일반적으로 터미널을 통해 SSH 연결을 하기 위해서는 다음과 같은 명령어를 통해 연결을 하게 된다.

ssh username@host

또한 SSH의 기본 포트번호인 22번이 아닌 다른 포트를 사용하고 싶다면 -p 옵션을 통해 입력을 해줘야 한다.

ssh username@host -p portnum

캡쳐할 때는 몰랐으나, 모자이크를 해야할 부분이 참 많다.

아무튼 위의 방법대로 연결을 하면 사진에서 볼 수 있듯 최초 SSH 연결 시 해당하는 서버의 키교환방식을 물어보며 계속 진행을 할 것인지 물어보게 된다. ‘yes’를 입력한다.

이후 서버 계정에 맞는 패스워드를 입력한다.

그러면, 연결이 성공하고 해당 서버의 prompt가 보이게 된다.

연결 종료를 하기 위해서는 exit 명령어 또는 ‘Ctrl+d’를 입력하면 된다.

그렇게 연결이 종료되면 Mac의 prompt로 변경이 된다.

SSH config

그럼 이제 드디어 ssh config에 대해 알아보자.

이 설정을 사용하게 된다면, 하나의 원격 서버에 접속할 설정을 저장하는 것이 아닌, 여러 원격 서버 접속 정보를 미리 저장하여 접속하는 것이 가능하다고 한다.

~/ssh/comfig 안에다가 설정을 하면된다.

그런데 여기서 중요한 것은 Linux 접속을 계정명과 패스워드로하는 경우 ssh config에 패스워드를 따로 평문으로 저장하여 사용하는 기능은 없다.

가능한 것은 AWS SSH 와 같이 IdentityFile 을 통해 key값을 가지고있는 파일을 통한 인증으로 접속이 가능한 경우 이 파일의 경로를 등록하여 바로 접속이 가능하다.

Specifying password in .ssh/config file?

위의 링크에서 찾아보니 뭔가 있는 것 같기는 한데, 보안적으로 문제가 있는지 기본적인 ssh config에는 그런 저장하는 것이 없는 것 같다.

또한 더 찾아보니 macOS 기본 터미널에 여러 ssh연결을 위해 address, user 까지는 저장하고 이를 클릭을 통해 접속 패스워드 입력 직전까지 갈 수 있는 기능은 있으나, 이것은 너무 불편했다.

결론은 그냥 조금 불편하더라도 터미널보다는 낫다는 생각을 갖고 사용해야겠다.