태그 글 보관함: SSH 설정

우분투 서버 22.04 LTS 공개키 방식 SSH 접속이 안됨

오라클 클라우드에서 ARM 서버를 생성해서 최신 우분투 22.04 LTS를 운영체제로 선택했는데, SSH 접속이 안되서 한시간 정도 헤맸다.

오라클 클라우드에서는 서버를 생성할 때 SSH 접속용 공개키를 생성하거나 등록해야만 SSH 접속을 사용할 수 있는데,
기존 오라클 클라우드에서 사용하던 서버에 등록한 공개키를 등록해서 서버를 생성.
서버 기동 완료 후에 SSH 접속을 하면 아래 에러가 발생. (MobaXterm에 표시되는 에러 메시지)

서버 접속조차 불가능하니 로그를 볼 수도 없고, 한참 헤맸다.

결국 기존 서버에서 ssh -i 옵션으로 개인키를 지정하니 접속이 되더라 (왜 되는건지…?)
접속 에러가 기록된 /var/log/auth.log 파일을 보면

이런 에러 내용이 찍혀 있는데, 암호화 알고리즘이 문제인것 같아서 좀 검색해 보니…

OpenSSH 8.8부터 SHA-1 알고리즘으로 작성한 RSA 인증은 무효화 되었다고 한다.
서버 생성할 때 등록했던 예전부터 사용하던 키쌍이 2년 정도 된 오래된것이니 아마 그걸로 작성했던듯.

ssh-keygen 커맨드로 새로 키를 생성해서 사용하면 문제가 없다.
아무 옵션을 지정하지 않으면, 3072bit RSA(SHA256)로 작성 되니 그걸 사용하면 문제 없다.

일단 ed25519가 더 좋은것 같으니… 이걸로 작성해서 사용해야겠다.

참고 사이트
RSA, ED25519 차이(성능 등)
https://naleejang.tistory.com/218
SSH keys
https://wiki.archlinux.org/title/SSH_keys

CentOS 7.1 최소 설치 후 SSH 포트 번호 변경 방법. 방화벽 포트 열기

CentOS 7.1을 최소 설치 후, SSH 포트를 변경하는 방법을 설명한다. CentOS 7.1에서 바뀐 명령도 있는 것 같고, 최소로 설치하면 설치가 안된 툴들이 있어서 그런지 우분투에서 쓰던 여러 명령들이 작동하지 않는다. 애초에 우분투와 다른 명령들도 많고…

IP 주소 고정

CentOS 설치 과정에서 네트워크 설정으로 들어가서 IP 주소를 고정으로 할당 받도록 하면 일이 많이 편해진다. 설치 과정에서 설정하지 않았으면, 아래 파일을 편집 후 네트워크를 재시작해야 한다.

ifconfig 로 현재 IP 주소를 알아보려고 하면 command not found. 이럴때는 ifconfig 대신 ip 명령을 사용하면 된다.

ifconfig 커맨드를 쓰려면 net-tools 팩키지를 설치하면 된다.

SSH 포트 번호 변경

우분투와 다름없이 아래 명령으로 sshd_config 파일을 열어서 Port 부분의 주석을 해제하고 원하는 포트 번호를 써주고 파일을 저장한다.

로 되어 있는 걸

으로 고치고 저장한다.

그리고, SSH데몬 재기동

테라텀으로 서버 IP 주소에 바꾼 포트 번호로 접속을 해 봐도 접속이 안될 것이다. SSH 포트가 제대로 바뀌어 있나 확인 해 보자.

열려 있는 포트 중에 위에서 바꾼 새로운 SSH 포트 번호인 1022가 나오지 않는다.

이유는 CentOS 에 있는 SELinux가 SSH 포트를 기본 SSH 포트인 22번으로 고정하고 있기 때문이다. SELinux 의 SSH 포트 정의에 1022 번을 추가하기 위해서는 semanage 명령이 필요하다. 하지만, semanage 명령을 쳐보면 command not found. semanage 툴을 설치하자.

먼저 SSH 포트 정의 내용을 확인한다.

ssh_port_t 라는 이름으로 TCP 22번이 쓰여져 있다.

아래 명령으로 ssh_port_t 정의에 TCP 포트 1022번을 추가한다. 시간이 좀 걸린다. 기다리자.

다시 SSH데몬 재기동 후, 포트가 열려 있는지 다시 확인한다.

이번에는 1022번이 열려 있는걸 확인 할 수 있다.
다시 테라텀으로 접속해 보면 여전히 접속이 안될 것이다. 이번엔 방화벽이 문제다.

방화벽 포트 열기

CentOS 에서는 방화벽이 돌아가고 있고, 기본 SSH 포트인 22번 포트는 열려 있지만, SSH 포트를 임의의 포트 번호로 변경을 했을 때는 당연히 그 포트 번호는 방화벽으로 막혀 있는 상태이다.
방화벽에 새로 지정한 SSH 포트 번호를 추가해야 한다.

CentOS 7 에서는 기본 방화벽인 iptables 대신 firewall 을 사용한다.

현재 방화벽 상태는 아래 명령으로 확인한다.

명령 실행 결과

services 에 ssh 는 포트 22번이기 때문에, ports 에 TCP 1022번 포트를 추가해 줘야한다.

아래 명령을 실행해서 1022번 포트를 추가해 주고, 방화벽을 리로드 한다. 그리고, 확인.

ports 에 1022/tcp 라고 되어 있으면 포트 번호가 제대로 추가된 것이다.

이제 테라텀으로 접속하면 잘 접속 될 것이다.

우분투 서버 14.04 LTS SSH 접속 설정

하이퍼v(hyper-v)에 우분투 서버를 설치하면 가상머신접속 화면에서는 한글이 깨지게 된다.
그럴때는 테라텀(teraterm) 등의 SSH 접속 프로그램으로 서버에 접속해서 사용하면 되는데, 서버는 항상 켜두고 원격에서 접속해서 서버를 관리하는게 여러모로 편리하니 SSH 접속 설정을 해 두는 것이 좋다.
이 글에서는 SSH 접속을 위한 설정을, 다음 글에서 테라텀을 이용한 접속에 대해서 설명해 보겠다.

SSH 설치

openssh 는 우분투 서버 설치 마지막에 선택해서 설치하면 편리한데, 설치하지 않았다면 아래 명령으로 설치 할 수 있다.

SSH 포트번호 변경

SSH 는 기본적으로 22번 포트를 사용하게 되어 있다.
웹서버나 FTP 서버로 사용하기 위해서 외부에 공개할 서버의 경우에는 SSH 의 기본 포트번호인 22번 포트로 공격해 오는 일이 많기 때문에 SSH 의 포트번호를 임의의 포트번호로 변경하는 것이 좋다.

openssh 데몬의 설정 파일을 편집한다.

예를 들어 포트번호를 1022번으로 변경할 경우에는 아래와 같이 바꾼다.

그리고, 보안을 위해서 root 계정으로 로그인을 금지하라는 글이 많은데 우분투 서버에서 openssh 설치시 기본적으로 아래와 같은 설정으로 금지 되어있으므로 신경 안써도 된다.

내용을 설명하자면, without-password는 패스워드를 입력한 root 계정 로그인을 허가하지 않는다는 말인데, 공개키를 만들어서 접속하는 방법으로는 root 계정 로그인을 허가하겠다는 설정이다. 공개키를 만들지 않으면 당연히 접속이 불가능하기 때문에 실질적으로 root 계정은 접속이 불가능해진다.

설정 파일을 저장하고 빠져 나와서 ssh 서비스를 재기동한다.

netstat 로 설정된 포트가 제대로 열려 있는지 확인해 본다.

sshd_config 에서 설정한 포트가 1022일때 아래와 같은 줄이 나와야한다.

다음 글에서는 테라텀으로 SSH 접속하는 방법에 대해서 설명해 보겠다.